【发布时间】:2014-04-09 14:54:59
【问题描述】:
我之前曾多次使用asset_sync gem并取得了巨大的成功,但在Rails 4.0.3项目中使用它似乎引起了问题。
资产已上传、散列并压缩到目标目录(我只是使用默认的“资产”),但在暂存/生产环境中运行应用程序时,路径不正确。
他们采取以下形式:
S3_DOMAIN.com/stylesheets/application.css
代替:
S3_DOMAIN.com/assets/application-HASH.css
有没有其他人遇到过这个问题?我发现扭转这种行为的唯一方法是将 config.assets.compile 设置为 true,但这在生产环境中是行不通的。
以下是相关配置文件:
## environments/staging.rb
config.serve_static_assets = false
config.assets.compress = true
config.assets.js_compressor = :uglifier
config.assets.css_compressor = :sass
# Have to set this to true to make asset_sync generate the correct links
config.assets.compile = false
config.assets.digest = true
config.assets.enabled = true
config.assets.initialize_on_precompile = true
config.action_controller.asset_host = "//#{Figaro.env.fog_directory}.s3.amazonaws.com"
config.action_mailer.asset_host = "//#{Figaro.env.fog_directory}.s3.amazonaws.com"
config.assets.prefix = "/assets"
config.assets.debug = false
config.assets.cache_store = :memory_store
##config/asset_sync.yml
defaults: &defaults
fog_provider: 'AWS'
aws_access_key_id: "<%= ENV['AWS_ACCESS_KEY_ID'] %>"
aws_secret_access_key: "<%= ENV['AWS_SECRET_ACCESS_KEY'] %>"
# To use AWS reduced redundancy storage.
# aws_reduced_redundancy: true
# You may need to specify what region your storage bucket is in
fog_region: <%= ENV['FOG_REGION'] %>
existing_remote_files: keep
# To delete existing remote files.
# existing_remote_files: delete
# Automatically replace files with their equivalent gzip compressed version
gzip_compression: true
# Fail silently. Useful for environments such as Heroku
# fail_silently: true
development:
<<: *defaults
enabled: false
test:
<<: *defaults
enabled: false
staging:
<<: *defaults
fog_directory: <%= ENV['FOG_DIRECTORY'] %>
production:
<<: *defaults
fog_directory: <%= ENV['FOG_DIRECTORY'] %>
【问题讨论】:
-
我在生产环境中也遇到了类似的问题...希望尽快解决
-
我也有同样的问题...你有没有搞清楚?
标签: ruby-on-rails ruby ruby-on-rails-4 asset-pipeline asset-sync