[英]Rails heroku deploy jquery and css errors, set amazon s3 variables locally
當我推送到heroku時,日志不會報告錯誤,一切似乎都很好。 但是在線生產站點上的css和jquery有點零碎。 因此,我使用rails server -e production
啟動了本地服務器,並立即收到錯誤Missing required arguments: aws_access_key_id, aws_secret_access_key
的錯誤Missing required arguments: aws_access_key_id, aws_secret_access_key
。 如何在不進行硬編碼的情況下在本地設置這些? 當沒有報告的錯誤時,生產CSS / JavaScript失敗的可能原因是什么?
在本地設置環境變量安裝gem
# Gemfile
gem 'dotenv-rails'
然后創建一個名為
.env
並將其放置在與.gitignore文件相同的文件夾/位置中(即,應用程序文件夾的頂部)。
在.env文件內部,將環境變量放入這樣的環境中
aws_access_key_id=1234556
aws_secret_access_key=1234556
現在不要忘記像這樣將.env文件添加到您的.gitignore文件中...
#.gitignore
# Ignore .env (local development environment vairables)
.env
Rails 4.1+具有一組“秘密”密鑰,您可以在config/secrets.yml
進行分配:
Rails 4.1
在config文件夾中生成一個新的secrets.yml
文件。 默認情況下,此文件包含應用程序的secret_key_base,但也可以用於存儲其他機密,例如外部API的訪問密鑰。
這用於在Rails.application.secrets
哈希中為您提供一系列值,這些值取決於環境。
因此,您應該做的如下:
#config/secrets.yml
development:
aws_secret_key: "x"
aws_access_key_id: "y"
production:
aws_secret_key: ENV["AWS_SECRET"]
aws_access_key_id: ENV["AWS_ACCESS"]
出現錯誤的原因是因為您正在為production
環境調用rails server
。 由於您在生產中使用上述鍵,因此在開發箱上運行時,如果沒有這些鍵,將會引起問題。
解決此問題的最佳方法是在設置AWS配置(假定為config/environments/production.rb
)的任何地方使用Rails.application.secrets.aws_secret_key
。
雖然它不能直接解決問題,但可以幫助您在development
和production
之間建立無縫過渡(應該盡可能相似)。
為了解決問題本身,您應該在本地計算機上為aws_secret_key
和aws_access_key_id
設置ENV
變量。
這是在操作系統級別完成的-在Windows中(我們使用的是Windows),您可以使用以下代碼 。
確保在系統上設置了ENV變量,並且該應用程序應在生產模式下運行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.