Rails 应用程序未在弹性 beantalk aws 上加载资产
Posted
技术标签:
【中文标题】Rails 应用程序未在弹性 beantalk aws 上加载资产【英文标题】:Rails app not loading assets on elastic beanstalk aws 【发布时间】:2015-12-30 01:00:36 【问题描述】:就上下文而言,我基本上是按照本指南来设置我的 rails 应用程序:https://medium.com/@jatescher/how-to-set-up-a-rails-4-2-app-on-aws-with-elastic-beanstalk-and-postgresql-3f9f29c046e2
我的应用程序现在在 AWS 上运行: http://ems-heroes-dev.elasticbeanstalk.com/
运行 Ruby 2.2 (Puma) 的 64 位 Amazon Linux 2015.03 v2.0.1
但是,我无法加载任何资产。
这是我的配置/环境/production.rb:
EmsHeroes::Application.configure do
config.cache_classes = true
config.eager_load = true
config.consider_all_requests_local = false
config.action_controller.perform_caching = true
config.serve_static_assets = true
# Compress javascripts and CSS.
config.assets.js_compressor = :uglifier
config.assets.compress = true
config.assets.compile = true
# Bower asset paths
root.join('vendor', 'assets', 'components').to_s.tap do |bower_path|
config.sass.load_paths << bower_path
config.assets.paths << bower_path
end
# Precompile Bootstrap fonts
config.assets.precompile << %r(bootstrap-sass/assets/fonts/bootstrap/[\w-]+\.(?:eot|svg|ttf|woff2?)$)
# Minimum Sass number precision required by bootstrap-sass
::Sass::Script::Value::Number.precision = [8, ::Sass::Script::Value::Number.precision].max
config.less.paths << "#Rails.root/lib/less/protractor/stylesheets"
config.less.compress = true
# Generate digests for assets URLs.
config.assets.digest = true
config.assets.enabled = true
# Version of your assets, change this if you want to expire all your assets.
config.assets.version = '1.0'
# Specifies the header that your server uses for sending files.
# config.action_dispatch.x_sendfile_header = "X-Sendfile" # for apache
config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' # for nginx
# Force all access to the app over SSL, use Strict-Transport-Security, and use secure cookies.
config.force_ssl = false
config.log_level = :info
config.i18n.fallbacks = true
config.active_support.deprecation = :notify
config.log_formatter = ::Logger::Formatter.new
end
不过,我的资产通过 heroku 加载得很好。 (不过,我不打算再使用heroku了)
编辑 rake assets:precompile 提供了错误的文件名,这似乎是一个问题。例如:我编译的 css 文件是:“public/assets/application-79dc234c01a4f604b52fc53ff49ac89d.css”但我得到一个 404 寻找“application.css”。将文件重命名为“public/assets/application.css”将正确加载它。
知道为什么会出现这种情况以及如何让它正确预编译吗?
【问题讨论】:
【参考方案1】:文件名后面的这个字符串称为“digest”,用于在文件内容发生变化时通知浏览器。您需要使用视图助手(asset_path 等)来获取带有摘要的名称,或者您可以使用 config.assets.digest = false 关闭此功能
【讨论】:
以上是关于Rails 应用程序未在弹性 beantalk aws 上加载资产的主要内容,如果未能解决你的问题,请参考以下文章
在弹性 beantalk 上部署 rails 应用程序时出错(生产模式)
升级弹性 beantalk 堆栈时,Rails 应用程序无法部署
使用弹性 beantalk 部署的 Rails 应用程序响应“无法访问站点”
在 AWS 弹性 beantalk 上使用 webpacker gem 部署 rails react 应用程序
我的 ec2 实例中乘客日志文件的位置(弹性 beantalk + rails)
应该如何使用 Amazon Web 服务及其弹性 beantalk 将机密文件推送到 EC2 Ruby on Rails 应用程序?