Sha256: 98ce41e6404452c3ac69db5533080656673e809c7b7124d0f6819ed8f638be26

Contents?: true

Size: 1.52 KB

Versions: 40

Compression:

Stored size: 1.52 KB

Contents

# frozen_string_literal: true

require "active_support"
require "active_support/core_ext/class/attribute"

module Rails
  module Command
    module EnvironmentArgument # :nodoc:
      extend ActiveSupport::Concern

      included do
        class_option :environment, aliases: "-e", type: :string,
          desc: "The environment to run `#{self.command_name}` in (e.g. test / development / production)."
      end

      def initialize(...)
        super

        @environment_specified = options[:environment].present?

        if !@environment_specified
          self.options = options.merge(environment: Rails::Command.environment)
        elsif !available_environments.include?(options[:environment])
          self.options = options.merge(environment: expand_environment_name(options[:environment]))
        end
      end

      private
        def require_application!
          ENV["RAILS_ENV"] = environment
          super
        end

        def environment
          @environment ||= options[:environment]
        end

        def environment=(environment)
          @environment = environment
        end

        def environment_specified?
          @environment_specified
        end

        def available_environments
          @available_environments ||=
            Dir["config/environments/*.rb"].map { |filename| File.basename(filename, ".*") }
        end

        def expand_environment_name(name)
          %w[production development test].find { |full_name| full_name.start_with?(name) } || name
        end
    end
  end
end

Version data entries

40 entries across 40 versions & 5 rubygems

Version Path
railties-8.0.2 lib/rails/command/environment_argument.rb
minato_ruby_api_client-0.2.2 vendor/bundle/ruby/3.2.0/gems/railties-7.1.3.4/lib/rails/command/environment_argument.rb
railties-8.0.1 lib/rails/command/environment_argument.rb
railties-8.0.0.1 lib/rails/command/environment_argument.rb
railties-7.2.2.1 lib/rails/command/environment_argument.rb
railties-7.1.5.1 lib/rails/command/environment_argument.rb
railties-8.0.0 lib/rails/command/environment_argument.rb
railties-7.2.2 lib/rails/command/environment_argument.rb
railties-7.1.5 lib/rails/command/environment_argument.rb
railties-8.0.0.rc2 lib/rails/command/environment_argument.rb
railties-7.2.1.2 lib/rails/command/environment_argument.rb
railties-7.1.4.2 lib/rails/command/environment_argument.rb
railties-8.0.0.rc1 lib/rails/command/environment_argument.rb
railties-7.2.1.1 lib/rails/command/environment_argument.rb
railties-7.1.4.1 lib/rails/command/environment_argument.rb
railties-8.0.0.beta1 lib/rails/command/environment_argument.rb
omg-railties-8.0.0.alpha9 lib/rails/command/environment_argument.rb
omg-railties-8.0.0.alpha8 lib/rails/command/environment_argument.rb
omg-railties-8.0.0.alpha7 lib/rails/command/environment_argument.rb
omg-railties-8.0.0.alpha4 lib/rails/command/environment_argument.rb