我试图自动配置我的Rails应用程序,我希望能够启动应用程序而无需指定端口,因为我希望根据环境来选择它环境。Rails 4:根据环境使用不同的服务器端口
具体来说(一开始就很简单)在端口3000上运行应用程序(如果环境是生产的话),否则在端口3500上。
所以,下面这个答案,我已经添加了以下到我的boot.rb文件:
require 'rails/commands/server'
module DefaultOptions
def default_options
super.merge!(Port: Rails.env.production? ? 3000 : 3500)
end
end
Rails::Server.send(:prepend, DefaultOptions)
不幸的是我做错了什么,因为这是输出当我运行rails s
:
/home/luca/projects/ads_manager/config/boot.rb:10:in `default_options': undefined method `env' for Rails:Module (NoMethodError)
from /usr/local/lib/ruby/gems/2.0.0/gems/rack-1.5.2/lib/rack/server.rb:287:in `parse_options'
from /usr/local/lib/ruby/gems/2.0.0/gems/rack-1.5.2/lib/rack/server.rb:184:in `options'
from /usr/local/lib/ruby/gems/2.0.0/gems/railties-4.0.0/lib/rails/commands/server.rb:58:in `set_environment'
from /usr/local/lib/ruby/gems/2.0.0/gems/railties-4.0.0/lib/rails/commands/server.rb:42:in `initialize'
from /usr/local/lib/ruby/gems/2.0.0/gems/railties-4.0.0/lib/rails/commands.rb:73:in `new'
from /usr/local/lib/ruby/gems/2.0.0/gems/railties-4.0.0/lib/rails/commands.rb:73:in `<top (required)>'
from bin/rails:4:in `require'
from bin/rails:4:in `<main>'
任何想法为什么Rails.env不可用?
取得同样结果的替代方法确实值得欢迎。
@Gopalrathore我看不出它如何能更改端口。你能多解释一下吗?这是否意味着“只有在不生产时才这样做”? – lucke84
只是它为生产环境设置了一个端口,对于开发,默认情况下使用的是3000. –
它适用于u吗? ...其实我没有测试过它。 –