1

我正在开发一个使用端口的 Rails 应用程序,我正在尝试导出它。这是我尝试过的:

配置/环境.rb

# Load the rails application
require File.expand_path('../application', __FILE__)

# Initialize the rails application
Facturas::Application.initialize!
ENV['PORT_NUMBER'] = '12000'
  ActionMailer::Base.smtp_settings = {
  :address              => "smtp.gmail.com",
  :port                 => 587,
  :domain               => 'gmail.com',
  :user_name            => 'email',
  :password             => '****************',
  :authentication       => 'plain',
  :enable_starttls_auto => true  }

也是服务器 /etc/environment 上的文件:

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games"
PORT_NUMBER = "12000"

我已经单独和一起尝试过它们,但它没有解决问题,如果有帮助,我会在 gem 中调用端口号:

port = ENV['PORT_NUMBER'] || find_available_port

我在 ubuntu 服务器上,与 apache 和乘客一起工作。

4

2 回答 2

0

查看 Phusion 乘客手册中的关于环境变量附录。

于 2013-07-10T22:46:59.253 回答
0

我已将 ENV 用于类似目的。我能猜到的唯一问题是,gem 在加载阶段是否需要该变量。config/environment.rb 在 gem 加载后被加载。在这种情况下,它需要放在 config/boot.rb 的顶部(在打包程序加载 gems 之前):

    require 'rubygems'
    ENV['PORT_NUMBER'] = '12000'

对于其他方法,/etc/environment 仅在用户登录时才会使用,而 Apache(在 Ubuntu 中作为服务启动)则不是这种情况。尝试在 Apache http://www.modrails.com/documentation/Users%20guide%20Apache.html#env_vars_passenger_apps中设置 ENV

于 2013-07-11T12:54:28.160 回答