【问题标题】:Heroku not serving files from assetsHeroku 不从资产中提供文件
【发布时间】:2013-07-21 21:41:26
【问题描述】:

我正在尝试将 Heroku 作为我们当前 Rails 4.0.0 项目的主机。虽然这似乎是 Heroku 用户经常遇到的问题,但我发现的解决方案都没有对我产生任何影响。

服务器没有从我们的资产中提供我们的任何图像、css 或 js。

我尝试添加宝石:

gem 'rails_log_stdout',           github: 'heroku/rails_log_stdout'
gem 'rails3_serve_static_assets', github: 'heroku/rails3_serve_static_assets'
gem 'rails_12factor'

并将production.rb 中的配置选项设置为:

config.action_dispatch.x_sendfile_header = "X-Accel-Redirect"
config.serve_static_assets = true
config.assets.initialize_on_precompile = false

在各种组合中,但服务器仍然不会加载任何资产。

明确地说,如果我错过了任何简单的事情,我将进行这些更改,将代码提交到 GitHub,然后执行 git push staging master。我的开发机器是 Windows 8 机器。

编辑 这是执行git push staging master的输出:

Counting objects: 11, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (6/6), done.
Writing objects: 100% (6/6), 569 bytes, done.
Total 6 (delta 4), reused 0 (delta 0)

-----> Ruby/Rails app detected
-----> Using Ruby version: ruby-2.0.0
-----> Installing dependencies using Bundler version 1.3.2
       Running: bundle install --without development:test --path vendor/bundle -
-binstubs vendor/bundle/bin
       Updating git://github.com/milgner/compass-rails.git
       Fetching gem metadata from https://rubygems.org/..........
       Fetching gem metadata from https://rubygems.org/..
       Resolving dependencies...
       Using rake (10.1.0)
       Using i18n (0.6.4)
       Using minitest (4.7.5)
       Using multi_json (1.7.7)
       Using atomic (1.1.10)
       Using thread_safe (0.1.0)
       Using tzinfo (0.3.37)
       Using activesupport (4.0.0)
       Using builder (3.1.4)
       Using erubis (2.7.0)
       Using rack (1.5.2)
       Using rack-test (0.6.2)
       Using actionpack (4.0.0)
       Using mime-types (1.23)
       Using polyglot (0.3.3)
       Using treetop (1.4.14)
       Using mail (2.5.4)
       Using actionmailer (4.0.0)
       Using activemodel (4.0.0)
       Using activerecord-deprecated_finders (1.0.3)
       Using arel (4.0.0)
       Using activerecord (4.0.0)
       Using bundler (1.3.2)
       Using chunky_png (1.2.8)
       Using coffee-script-source (1.6.3)
       Using execjs (1.4.0)
       Using coffee-script (2.2.0)
       Using thor (0.18.1)
       Using railties (4.0.0)
       Using coffee-rails (4.0.0)
       Using fssm (0.2.10)
       Using sass (3.2.9)
       Using compass (0.12.2)
       Using compass-rails (1.0.3) from git://github.com/milgner/compass-rails.g
it (at 1749c06)
       Using hike (1.2.3)
       Using jbuilder (1.4.2)
       Using jquery-rails (3.0.4)
       Using json (1.8.0)
       Using modernizr-rails (2.6.2.3)
       Using pg (0.15.1)
       Using tilt (1.4.1)
       Using sprockets (2.10.0)
       Using sprockets-rails (2.0.0)
       Using rails (4.0.0)
       Using rails_serve_static_assets (0.0.1)
       Using rails_stdout_logging (0.0.1)
       Using rails_12factor (0.0.2)
       Using rdoc (3.12.2)
       Using sass-rails (4.0.0)
       Using sdoc (0.3.20)
       Using turbolinks (1.3.0)
       Using uglifier (2.1.2)
       Using zurb-foundation (4.0.9)
       Your bundle is complete! It was installed into ./vendor/bundle
       Cleaning up the bundler cache.
       Removing rails_log_stdout (01b5bcc572e3)
       Removing rails3_serve_static_assets (84910ceb4ca2)
-----> Writing config/database.yml to read from DATABASE_URL
-----> Preparing app for Rails asset pipeline
       Running: rake assets:precompile
       Asset precompilation completed (13.42s)
       Cleaning assets
-----> WARNINGS:
       Removing `Gemfile.lock` because it was generated on Windows.
       Bundler will do a full resolve so native gems are handled properly.
       This may result in unexpected gem versions being used in your app.
-----> Discovering process types
       Procfile declares types      -> (none)
       Default types for Ruby/Rails -> console, rake, web, worker

-----> Compiled slug size: 37.0MB
-----> Launching... done, v16
       http://myproject.herokuapp.com deployed to Heroku

To git@heroku.com:myproject.git
   82f4d58..e930ff1  master -> master

【问题讨论】:

  • 请添加来自git push heroku的日志
  • 已添加。谢谢@MichaelSzyndel
  • 好的,编译继续,你真的应该设置config.serve_static_assets = true吗?默认情况下它是错误的,我认为应该保持这种方式。
  • 我正在查看我的 Rails 4 应用程序,您应该将静态资产设置为 false 并且只有这个 gem gem 'rails_12factor'
  • 你解决过这个问题吗?

标签: ruby-on-rails heroku asset-pipeline


【解决方案1】:

在您的生产配置文件中,您是否也尝试过设置:

config.assets.compile = true
config.assets.digest = true

config.assets.initialize_on_precompile 行已被删除,在 Rails 4 中不需要。

此外,rails_12factor gem 被设置为包含 heroku 所需的另外两个 gem,因此您不必将它们包含在 Gemfile 中。您可以在他们的github 页面上获得更多信息。

不过,无论出于何种原因,我总是必须确保使用 rails image_tag 来让我的图像在生产中显示。不确定您是否这样做,但它对我的应用产生了很大影响。

希望这会有所帮助!

【讨论】:

  • 谢谢,但不行。 config.assets.compile 设置为 false 但将其更改为 true 无效。呃。
  • 无赖。这两行对我有用。出于好奇,我刚刚注意到您正在推动一个暂存环境,而不是生产环境。您是否在 staging.rb 环境文件中进行了所有讨论的更改?
  • 不,我没有,我也不知道我需要一个,我一直在使用我的production.rb。这肯定是原因,但我必须在今晚晚些时候试一试。谢谢!
  • 没有。对于它的价值,我什至创建了一个新的生产服务器并部署在那里,但仍然没有任何变化。非常感谢您的帮助!
  • 添加 config.assets.digest = true 对我有用,rails 5 heroku
猜你喜欢
  • 2019-04-25
  • 2017-01-14
  • 1970-01-01
  • 2014-09-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-01
  • 1970-01-01
相关资源
最近更新 更多