加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – Rails 4:根据环境使用不同的服务器端口

发布时间:2020-12-17 02:39:42 所属栏目:百科 来源:网络整理
导读:我正在尝试自动配置我的rails应用程序,我希望能够在不指定端口的情况下启动应用程序,因为我希望根据环境选择它. 具体而言(开始时很简单)如果环境是生产则在端口3000上运行应用程序,否则在端口3500上运行. 所以,按照这个答案,我在boot.rb文件中添加了以下内容
我正在尝试自动配置我的rails应用程序,我希望能够在不指定端口的情况下启动应用程序,因为我希望根据环境选择它.

具体而言(开始时很简单)如果环境是生产则在端口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时的输出:

/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不可用吗?

获得相同结果的替代方案确实非常受欢迎.

解决方法

如果您使用的是* NIX系统,则可以尝试以下操作

在终端中运行以下命令

export RAILS_ENV =生产

注意:这会将环境暂时设置为生产环境,如果您需要永久保存,请将其添加到.bashrc文件中

然后启动您的应用程序服务器.

在boot.rb文件中,使用ENV [‘RAILS_ENV’]而不是Rails.env

希望这可以帮助.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读