gpt4 book ai didi

ruby-on-rails - Rails 4.0.3 使用 asset_sync 生成不正确的 Assets 路径

转载 作者:数据小太阳 更新时间:2023-10-29 07:01:00 31 4
gpt4 key购买 nike

我以前多次使用 asset_sync gem 并取得了很大的成功,但是在 Rails 4.0.3 项目中使用它似乎导致了问题。

Assets 被上传、散列并 gzip 到目标目录(我只是使用默认的“ Assets ”),但是在暂存/生产环境中运行应用程序时,路径不正确。

它们的形式是:

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'] %>

最佳答案

您需要在 Rails 4 中以 production 模式运行所有相关 Assets 。

例如:

rake assets:precompile RAILS_ENV=production

如果您在默认模式(开发模式)下运行它,则哈希值会有所不同,因此 Rails 会完全忽略哈希值。

此外,您需要在启动服务器之前执行此操作,以便它找到文件。

注意:我认为此更改是为了让您能够缓存开发中的 Assets 。

关于ruby-on-rails - Rails 4.0.3 使用 asset_sync 生成不正确的 Assets 路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22233508/

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