雾谷歌,无法推到Heroku
所以我想设置上传我的生产环境中的文件。我目前正在使用CarrierWave和Fog-Google。我没有问题在本地存储文件,因为我不使用Fog进行开发。不过,我目前正在尝试测试生产中的文件上传功能,但我甚至无法将我的应用程序推到Heroku上。雾谷歌,无法推到Heroku
下面是我试图推送到Heroku时收到的错误片段。
[fog][WARNING] Unrecognized arguments: google_storage_secret_access_key_id, google_storage_secret_access_key
rake aborted!
ArgumentError: Invalid keyfile or passphrase
现在我对设置ENV秘密ID和所有这些比较新。所以相反,我只会说我知道我做了什么,只是为了确保我做的一切都正确。
所以当我目前使用的CLOUD9 IDE,我.bashrc
文件我有
export GOOGLE_STORAGE_ACCESS_KEY_ID=XXXXX
export GOOGLE_STORAGE_SECRET_ACCESS_KEY=XXXXX
export GOOGLE_STORAGE_BUCKET_NAME=XXXXX
在我/config/initializers/carrierwave.rb
require 'carrierwave'
CarrierWave.configure do |config|
config.fog_provider = 'fog/google' # required
config.fog_credentials = {
provider: 'Google',
google_storage_access_key_id: ENV['GOOGLE_STORAGE_ACCESS_KEY_ID'],
google_storage_secret_access_key: ENV['GOOGLE_STORAGE_SECRET_ACCESS_KEY']
}
config.fog_directory = ENV['GOOGLE_STORAGE_BUCKET_NAME']
end
,并在我的/config/initializers/fog.rb
GoogleStorage = Fog::Storage.new(
provider: 'Google',
google_project: 'XXXX',
google_client_email: 'XXXXXX',
google_key_location: Rails.root.join('private','google-cloud-service-key.p12'),
google_storage_secret_access_key_id: ENV["GOOGLE_STORAGE_SECRET_ACCESS_KEY_ID"],
google_storage_secret_access_key: ENV["GOOGLE_STORAGE_SECRET_ACCESS_KEY"]
)
就像提到我其实我对这些都很陌生,所以我尽了全力在遵循Fog和CarrierWave的github页面上的文档。
据我所知,我应该使用.bashrc
存储我的密钥等,然后使用ENV['SECRET_KEY_NAME']
方法调用它们。我已经在initializer文件夹中设置了CarrierWave.rb和Fog.rb文件,所以我不太确定我错过了什么。
此外,我也试过做heroku config:set GOOGLE_STORAGE_SECRET_ACCESS_KEY_ID=XXXXXX
但这似乎并没有工作。
我不太确定现在该做什么以及在尝试推向Heroku时可能导致错误的原因,更不用说这些工作是否在生产中。
编辑:
我认为错误在很大程度上是从fog.rb
文件。所以,我把它修改为以下几点:
GoogleStorage = Fog::Storage::Google.new(
google_project: 'XXX',
google_client_email: 'XXX',
google_json_key_location: '~/.fog/XXXX.json'
)
而现在,当我尝试力推的Heroku我得到的错误,而不是为
Errno::ENOENT: No such file or directory @ rb_sysopen - /app/.fog/XXX.json
只是为了分享,我的~
目录下创建一个.fog
文件夹。我在私人JSON密钥中添加了.fog
文件夹。
所有的帮助和建议将不胜感激。谢谢!
所以我解决了这个问题,并成功地将我的代码推到Heroku。
[请注意,这并不意味着它的功能完美地生产,它只是意味着我现在是能推到Heroku上没有任何错误]
所以有2个主要错误。
1)不包括我的私人密钥JSON文件在我的应用程序。
2)config/initializers/fog.rb
文件
为了解决第一个问题的错误,我在我的应用程序创建的文件夹.fog
以及其中来自谷歌的云平台我的私钥JSON文件添加。
接下来,我修改了代码config/initializers/fog.rb
到:
GoogleStorage = Fog::Storage::Google.new(
:google_project => 'XXXX',
:google_client_email => 'XXXXX',
:google_json_key_location => Rails.root.join('.fog/XXXX'),
:google_storage_access_key_id => ENV['GOOGLE_STORAGE_ACCESS_KEY_ID'],
:google_storage_secret_access_key => ENV['GOOGLE_STORAGE_SECRET_ACCESS_KEY']
)
当时我能够到我的代码成功地推到Heroku的。
你推'heroku config:set'后? – Aleksey
@Aleksey是的,我尝试过'heroku config:set'后仍然收到相同的错误。 – angkiki
也许你可以尝试'雾::存储::谷歌'而不是只是'雾::存储' – Aleksey