Я создаю приложение rails на heroku и хочу развернуть файлы js, css и изображений в ведро на Amazon. Я не нашел много ресурсов для этого, но я использую этот (2012) учебник для руководства; https://firmhouse.com/blog/complete-guide-to-serving-your-rails-assets-over-s3-with-asset_syncAsset_Sync не нажимает на S3
Сайт в основном css и js на данный момент. Вот мой код до сих пор;
production.rb
Rails.application.configure do
config.action_controller.asset_host = "http://localize.s3.amazonaws.com"
config.cache_classes = true
config.consider_all_requests_local = false
config.action_controller.perform_caching = true
config.serve_static_assets = false
config.assets.compress = true
config.assets.compile = false
config.assets.digest = true
end
инициализаторы/asset_sync.rb
if defined?(AssetSync)
AssetSync.configure do |config|
config.fog_provider = ENV['FOG_PROVIDER']
config.aws_access_key_id = ENV['AWS_ACCESS_KEY_ID']
config.aws_secret_access_key = ENV['AWS_SECRET_ACCESS_KEY']
config.fog_directory = ENV['FOG_DIRECTORY']
config.fog_region = ENV['FOG_REGION']
# Don't delete files from the store
config.existing_remote_files = "delete"
# Automatically replace files with their equivalent gzip compressed version
config.gzip_compression = true
# Use the Rails generated 'manifest.yml' file to produce the list of files to
# upload instead of searching the assets directory.
config.manifest = true
config.custom_headers = { '.*' => { cache_control: 'max-age=31536000', expires: 1.year.from_now.httpdate } }
end
end
Heroku Варс
AWS_ACCESS_KEY_ID: *****************
AWS_SECRET_ACCESS_KEY: *****************************
FOG_DIRECTORY: localize
FOG_PROVIDER: AWS
FOG_REGION: us-west-2
Gemfile
gem 'rails', '4.1.1'
gem 'uglifier', '>= 1.3.0'
gem 'jquery-rails'
gem 'sdoc', '~> 0.4.0', group: :doc
#aws
gem "fog", "~>1.20"
gem 'asset_sync'
group :development do
gem 'thin'
end
group :production do
gem 'newrelic_rpm'
gem 'rails_12factor'
gem 'pg'
end
Я побежал:
heroku config:add FOG_PROVIDER=AWS AWS_ACCESS_KEY_ID=xxx AWS_SECRET_ACCESS_KEY=yyy
Наряду с
heroku config:add FOG_DIRECTORY=localize
А потом, когда я бегу
bundle exec rake assets:precompile
Или
RAILS_ENV=production bundle exec rake assets:precompile
я получаю этот выход;
rake aborted!
AssetSync::Config::Invalid: Fog directory can't be blank, Aws access key can't be blank, Aws secret access key can't be blank
Любой, кто имеет опыт работы с рельсами, Heroku и S3, которые могли бы направить меня в правильном направлении была бы оценена. Заранее спасибо.
shouldnt config.fog_directory = ENV ['localize'] быть config.fog_directory = ENV ['FOG_DIRECTORY']? – Richlewis
и прочитав документы heroku, чтобы получить VARS на сервере heroku, вам может понадобиться выполнить конфигурацию heroku: установите FOG_DIRECTORY = localize, например .. вы проверили, использует ли config: add фактически добавил VARS на сервер heroku, выполнив конфигурацию heroku : получите FOG_DIRECTORY или выполните конфигурацию heroku, чтобы просмотреть все VARS, которые вы загрузили – Richlewis
@ Richlewis Да, я изменил код на config.fog_directory = ENV ['FOG_DIRECTORY']. Я также управлял конфигурацией heroku: add и heroku config: установите для FOG_DIRECTORY, FOG_PROVIDER, AWS_ACCESS_KEY_ID и AWS_SECRET_ACCESS_KEY. Ошибка, которую я получил, - «rake aborted! AssetSync :: Config :: Invalid: ключ доступа Aws не может быть пустым, секретный ключ доступа Aws не может быть пустым', поэтому он работал на FOG, но не AWS – user3749994