簡體   English   中英

Figaro環境變量不會為Heroku設置

[英]Figaro environment variables won't set for Heroku

我使用Rails Composer生成了一個框架應用程序,並包含了Figaro。 它在本地成功運行。 在修改它之前,我將其向下推到Heroku。 但是,heroku運行rake db:seed失敗。 我來發現app / config / application.yml是.gitignored。 因此,在運行heroku run rake db:seed之前,我需要使用rake figaro:heroku設置環境變量。 但是,Figaro:heroku耙失敗了,如下所示:

D:\BitNami\rubystack-2.0.0-11\projects\myapp>rake figaro:heroku
 !    Usage: heroku config:set KEY1=VALUE1 [KEY2=VALUE2 ...]
 !    Must specify KEY and VALUE to set.

看起來這只是在忽略我的app / config / application.yml並要求向我輸入行定向輸入,但我不知道。 再次,該應用程序在本地成功運行,因此application.yml應該正確。 這里是:

MANDRILL_USERNAME: valid.address@gmail.com
MANDRILL_APIKEY: a.valid.apikey
ADMIN_NAME: Admin Name
ADMIN_EMAIL: valid.address@gmail.com
ADMIN_PASSWORD: validpassword
ROLES: [admin, user, VIP]

當我發出heroku run rake db:seed時,失敗發生在種子中。 該文件是:

puts 'ROLES'
YAML.load(ENV['ROLES']).each do |role|
  Role.find_or_create_by_name(role)
  puts 'role: ' << role
end
puts 'DEFAULT USERS'
user = User.find_or_create_by_email :name => ENV['ADMIN_NAME'].dup, :email => ENV['ADMIN_EMAIL'].dup, :password => ENV['ADMIN_PASSWORD'].dup, :password_confirmation => ENV['ADMIN_PASSWORD'].dup
puts 'user: ' << user.name
user.confirm!
user.add_role :admin

由於ENV ['ROLES']未初始化,因此在首次訪問變量角色時失敗。 它將由application.yml初始化,並且是本地的,但是被.gitignored。 因此,需要使Figaro:heroku成為成功。

這似乎很簡單,特別是因為它在本地運行平穩。 OBTW,我嘗試了如圖所示的application.yml並將字符串用雙引號引起來,但無論如何似乎都沒有什么不同...

想法? 謝謝...

從您提到的路徑來看,我知道這是Windows問題。 問題是在Windows上無法正確處理陣列。 我曾經做過的變通辦法是在lib / tasks的rake文件中覆蓋Heroku的“ vars”方法,例如

module Figaro
  module Tasks
    class Heroku # < Struct.new(:app)
      def vars
        Figaro.env(environment).map { |key, value|
          if value.start_with? "["   
            value = "'#{value.gsub('"', '')}'"
          elsif value.include? " " 
            value = "'#{value}'" 
          end
          "#{key}=#{value}"
        }.sort.join(" ")
    end
    end
  end
end

我想問題可能出在費加羅對您不同變量類型的處理上:

MANDRILL_USERNAME: "valid.address@gmail.com"
MANDRILL_APIKEY: "a.valid.apikey"

ADMIN_NAME: "Admin Name"
ADMIN_EMAIL: "valid.address@gmail.com"
ADMIN_PASSWORD: "validpassword"

ROLES: ["admin", "user", "VIP"]

嘗試刪除所有空格並確保僅將KEY: "VALUE"發送給Figaro。 您的空間基本上會導致系統誤解

暫無
暫無

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

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