簡體   English   中英

在ubuntu生產服務器和Rails中設置環境變量

[英]Setting environment variables in ubuntu production server and Rails

我的控制器中有以下代碼:

def email_signup
    email_address = params[:email_address]

    response = RestClient.post("https://api:#{ENV['MAILGUN_API_KEY']}" \
                  "@api.mailgun.net/v3/lists/#{ENV['MAILGUN_ALIAS']}/members",
                  :subscribed => true,
                  :address => email_address)
    redirect_to jobs_url, success: "Thanks for Signing Up!"

    rescue RestClient::BadRequest => e
      redirect_to jobs_url, error: e
 end

使用dotenv gem在開發人員中表現出色。 部署到服務器后,我將新的環境變量添加到/ etc / environment並再次使用capistrano進行部署以重新啟動應用程序,並且該應用程序為我提供了RestClient::Unauthorized (401 Unauthorized):當我嘗試調用此操作時,讓我覺得環境。 未設置var。

從服務器控制台,如果我進入railsapp / current並運行ruby -e 'p ENV["MAILGUN_ALIAS"]'那么我可以看到正確打印的變量。

我也嘗試過導出.bashrc中的變量,但不會改變行為。

另外,僅供參考,我在服務器上使用RVM來設置ruby版本。

我還能在這里嘗試什么?

使用Capistrano,您是否在shared文件夾中設置了.env?

config/deploy.rb

set :linked_files, fetch(:linked_files, []).push(
  'config/database.yml', 'config/secrets.yml', '.env'
)

然后,顯然要確保在運行應用程序的服務器上的shared文件夾中配置了帶有密碼的.env文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM