Sha256: 973fdbb422a67f2ff40cd212100a6f693b53641b0558f3a5f919251862b4f183

Contents?: true

Size: 1.55 KB

Versions: 4

Compression:

Stored size: 1.55 KB

Contents

module Cany
  module Recipes
    class Rails < Recipe
      register_as :rails
      hook :env

      class DSL < Recipe::DSL
        delegate :compile_assets, :assets_env
      end

      attr_accessor :compile_assets, :assets_env

      def initialize(*args)
        @compile_assets = true
        @assets_env = 'production'
        super
      end

      def clean
        rmtree 'tmp', 'public/assets'
        inner.clean
      end

      def prepare
        recipe(:bundler).configure :env_vars, RAILS_ENV: 'production'
      end

      def build
        run_hook :env, :before
        if compile_assets
          ENV['RAILS_ENV'] = assets_env
          ruby_bin 'bundle', 'exec', 'rake', 'assets:precompile'
        end
        ENV['RAILS_ENV'] = 'production'
        inner.build
      end

      def binary
        run_hook :env, :after
        %w(app bin config.ru db Gemfile Gemfile.lock lib public Rakefile vendor).each do |item|
          install item, "/usr/share/#{spec.name}" if File.exists? item
        end

        Dir.foreach('config') do |entry|
          next if %w(. ..).include? entry
          install File.join('config', entry), "/etc/#{spec.name}"
        end
        install_link "/etc/#{spec.name}", "/usr/share/#{spec.name}/config"

        install_dir "/etc/#{spec.name}"
        install_dir "/var/tmp/#{spec.name}"
        install_dir "/var/log/#{spec.name}"

        install_link "/var/log/#{spec.name}", "/usr/share/#{spec.name}/log"
        install_link "/var/tmp/#{spec.name}", "/usr/share/#{spec.name}/tmp"
        inner.binary
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
cany-0.5.7 lib/cany/recipes/rails.rb
cany-0.5.6 lib/cany/recipes/rails.rb
cany-0.5.5 lib/cany/recipes/rails.rb
cany-0.5.4 lib/cany/recipes/rails.rb