RAILS_ENV 写在命令前后有什么区别呢?

时间:2021-07-04 23:13:15

https://ruby-china.org/topics/17446

#先设置:
RAILS_ENV=staging rails c

#后设置环境
rails c RAILS_ENV=staging

#或者
bin/rails c -e staging

RAILS_ENV needs to be set before config/application is required

  • 这里的 before 不是参数必须写在前面的意思.
  • 写在前面是 ENV , 写在后面是 ARGV.
  • rake 写在后面, 但是用法和 ENV 一样的原因在这里
def collect_command_line_tasks
  @top_level_tasks = []
  ARGV.each do |arg|
    if arg =~ /^(\w+)=(.*)$/m
      ENV[$1] = $2
    else
      @top_level_tasks << arg unless arg =~ /^-/
    end
  end
  @top_level_tasks.push(default_task_name) if @top_level_tasks.empty?
end