Skip to content

Commit

Permalink
Merge pull request #8633 from mykola-kyryk/issue_8628
Browse files Browse the repository at this point in the history
Allow environment name to start with a substring of the default
environment names.

Fixes #8628
  • Loading branch information
rafaelfranca committed Jan 4, 2013
2 parents d2bc6f9 + 4fa6088 commit fab7c53
Show file tree
Hide file tree
Showing 5 changed files with 44 additions and 2 deletions.
7 changes: 7 additions & 0 deletions railties/CHANGELOG.md
Expand Up @@ -4,6 +4,13 @@

*Jiri Pospisil*

* Environment name can be a start substring of the default environemnt names
(production, development, test).
For example: tes, pro, prod, dev, devel.
Fix #8628

*Mykola Kyryk*

* Quote column names in generates fixture files. This prevents
conflicts with reserved YAML keywords such as 'yes' and 'no'
Fix #8612
Expand Down
11 changes: 10 additions & 1 deletion railties/lib/rails/commands/console.rb
Expand Up @@ -24,11 +24,20 @@ def parse_arguments(arguments)

if arguments.first && arguments.first[0] != '-'
env = arguments.first
options[:environment] = %w(production development test).detect {|e| e =~ /^#{env}/} || env
if available_environments.include? env
options[:environment] = env
else
options[:environment] = %w(production development test).detect {|e| e =~ /^#{env}/} || env
end
end

options
end

private
def available_environments
Dir[Rails.root.join('config', 'environments', '*.rb')].map { |fname| File.basename(fname, '.*') }
end
end

attr_reader :options, :app, :console
Expand Down
10 changes: 9 additions & 1 deletion railties/lib/rails/commands/dbconsole.rb
Expand Up @@ -136,12 +136,20 @@ def parse_arguments(arguments)

if arguments.first && arguments.first[0] != '-'
env = arguments.first
options[:environment] = %w(production development test).detect {|e| e =~ /^#{env}/} || env
if self.class.available_environments.include? env
options[:environment] = env
else
options[:environment] = %w(production development test).detect {|e| e =~ /^#{env}/} || env
end
end

options
end

def self.available_environments
Dir[Rails.root.join('config', 'environments', '*.rb')].map { |fname| File.basename(fname, '.*') }
end

def find_cmd_and_exec(commands, *args)
commands = Array(commands)

Expand Down
6 changes: 6 additions & 0 deletions railties/test/commands/console_test.rb
Expand Up @@ -111,6 +111,12 @@ def test_rails_env_is_development_when_argument_is_d
assert_match(/\sdevelopment\s/, output)
end

def test_rails_env_is_dev_when_argument_is_dev_and_dev_env_is_present
Rails::Console.stubs(:available_environments).returns(['dev'])
options = Rails::Console.parse_arguments(['dev'])
assert_match('dev', options[:environment])
end

private

attr_reader :output
Expand Down
12 changes: 12 additions & 0 deletions railties/test/commands/dbconsole_test.rb
Expand Up @@ -45,6 +45,18 @@ def test_env
ENV['RAILS_ENV'] = "test"
end

def test_rails_env_is_development_when_argument_is_dev
Rails::DBConsole.stubs(:available_environments).returns(['development', 'test'])
options = Rails::DBConsole.new.send(:parse_arguments, ['dev'])
assert_match('development', options[:environment])
end

def test_rails_env_is_dev_when_argument_is_dev_and_dev_env_is_present
Rails::DBConsole.stubs(:available_environments).returns(['dev'])
options = Rails::DBConsole.new.send(:parse_arguments, ['dev'])
assert_match('dev', options[:environment])
end

def test_mysql
dbconsole.expects(:find_cmd_and_exec).with(%w[mysql mysql5], 'db')
start(adapter: 'mysql', database: 'db')
Expand Down

0 comments on commit fab7c53

Please sign in to comment.