将变量导出到生产环境

时间:2013-07-10 15:39:46

标签: ruby-on-rails-3 apache passenger ubuntu-12.04

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

到config / environment.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和乘客一起工作。

2 个答案:

答案 0 :(得分:0)

查看Phusion Passenger手册中的About environment variables附录。

答案 1 :(得分:0)

我已将ENV用于类似目的。如果gem在其加载阶段需要变量,那么我只能猜测。加载gem后加载config / environment.rb。在这种情况下,需要将它放在config / boot.rb中(在Bundler加载gems之前):

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

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