gpt4 book ai didi

ruby-on-rails - 不会为 Heroku 设置 Figaro 环境变量

转载 作者:太空宇宙 更新时间:2023-11-03 16:27:24 24 4
gpt4 key购买 nike

我使用 Rails Composer 生成了一个框架应用程序并包含了 Figaro。它在本地成功运行。在我修改它之前,我将它推送到 Heroku。但是,heroku run rake db:seed 失败了。我发现 app/config/application.yml 是 .gitignored。因此,在运行 heroku run rake db:seed 之前,我需要使用 rake figaro:heroku 来设置环境变量。但是, rake 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 时,seeds 出现故障。文件是:

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。因此,需要 rake Figaro:heroku 才能成功。

这看起来很简单,尤其是它在本地顺利运行。顺便说一句,我已经尝试了如图所示的 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

关于ruby-on-rails - 不会为 Heroku 设置 Figaro 环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22123832/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com