Rails 3.1.3 на Heroku: (нет совпадений с маршрутом [GET] "/assets/rails.png") - PullRequest
4 голосов
/ 15 января 2012

Я без проблем установил несколько базовых приложений на Heroku, и это (Rails 3.1.3) выглядело хорошо, так как показывало страницу приветствия Rails

public/index.html.erb

но когда я удалил эту страницу и затем установил

root :to => 'users#index'

У меня проблема. В логах героку сказано что есть ошибка роутинга

ActionController::RoutingError (No route matches [GET] "/assets/rails.png"):

Кто-нибудь знает, о чем это?

2012-01-14T21:48:29+00:00 heroku[web.1]: Process exited
2012-01-14T21:48:33+00:00 app[web.1]: >> Thin web server (v1.2.6 codename Crazy Delicious)
2012-01-14T21:48:33+00:00 app[web.1]: >> Maximum connections set to 1024
2012-01-14T21:48:33+00:00 app[web.1]: >> Listening on 0.0.0.0:32570, CTRL+C to stop
2012-01-14T21:48:34+00:00 heroku[web.1]: State changed from starting to up
2012-01-14T21:48:35+00:00 app[web.1]: cache: [GET /] miss
2012-01-14T21:48:36+00:00 app[web.1]: 
2012-01-14T21:48:36+00:00 app[web.1]: 
2012-01-14T21:48:36+00:00 app[web.1]: Started GET "/assets/rails.png" for 216.251.147.10 at 2012-01-14 13:48:36 -0800
2012-01-14T21:48:36+00:00 app[web.1]: 
2012-01-14T21:48:36+00:00 app[web.1]: ActionController::RoutingError (No route matches [GET] "/assets/rails.png"):
2012-01-14T21:48:36+00:00 app[web.1]:   
2012-01-14T21:48:36+00:00 app[web.1]: 
2012-01-14T21:48:36+00:00 app[web.1]: 
2012-01-14T21:48:36+00:00 app[web.1]: cache: [GET /assets/rails.png] miss
2012-01-14T21:48:35+00:00 heroku[router]: GET mmcarrier.heroku.com/ dyno=web.1 queue=0 wait=0ms service=19ms status=200 bytes=5907
2012-01-14T21:48:36+00:00 heroku[router]: GET mmcarrier.heroku.com/assets/rails.png dyno=web.1 queue=0 wait=0ms service=30ms status=404 bytes=728
2012-01-14T21:48:46+00:00 app[web.1]: cache: [GET /] miss
2012-01-14T21:48:46+00:00 app[web.1]: 
2012-01-14T21:48:46+00:00 app[web.1]: 
2012-01-14T21:48:46+00:00 app[web.1]: Started GET "/assets/rails.png" for 216.251.147.10 at 2012-01-14 13:48:46 -0800
2012-01-14T21:48:46+00:00 app[web.1]: 
2012-01-14T21:48:46+00:00 app[web.1]: ActionC

2012-01-14T21:48:46+00:00 app[web.1]:   
2012-01-14T21:48:46+00:00 app[web.1]: 
2012-01-14T21:48:46+00:00 app[web.1]: 
2012-01-14T21:48:46+00:00 app[web.1]: cache: [GET /assets/rails.png] miss
2012-01-14T21:48:46+00:00 app[web.1]: cache: [GET /favicon.ico] miss
2012-01-14T21:48:46+00:00 heroku[router]: GET mmcarrier.heroku.com/favicon.ico dyno=web.1 queue=0 wait=0ms service=3ms status=200 bytes=0
2012-01-14T21:48:46+00:00 heroku[router]: GET mmcarrier.heroku.com/ dyno=web.1 queue=0 wait=0ms service=6ms status=200 bytes=5907
2012-01-14T21:48:46+00:00 heroku[router]: GET mmcarrier.heroku.com/assets/rails.png dyno=web.1 queue=0 wait=0ms service=4ms status=404 bytes=728
2012-01-14T21:48:59+00:00 app[web.1]: cache: [GET /] miss
2012-01-14T21:48:59+00:00 heroku[router]: GET mmcarrier.heroku.com/ dyno=web.1 queue=0 wait=0ms service=5ms status=200 bytes=5907
2012-01-14T21:48:59+00:00 app[web.1]: 
2012-01-14T21:48:59+00:00 app[web.1]: 
2012-01-14T21:48:59+00:00 app[web.1]: Started GET "/assets/rails.png" for 216.251.147.10 at 2012-01-14 13:48:59 -0800
2012-01-14T21:48:59+00:00 app[web.1]: 
2012-01-14T21:48:59+00:00 app[web.1]: ActionController::RoutingError (No route matches [GET] "/assets/rails.png"):
2012-01-14T21:48:59+00:00 app[web.1]:   
2012-01-14T21:48:59+00:00 app[web.1]: 
2012-01-14T21:48:59+00:00 app[web.1]: 
2012-01-14T21:48:59+00:00 app[web.1]: cache: [GET /assets/rails.png] miss
2012-01-14T21:48:59+00:00 heroku[router]: GET mmcarrier.heroku.com/assets/rails.png dyno=web.1 queue=0 wait=0ms service=3ms status=404 bytes=728
2012-01-14T21:49:18+00:00 app[web.1]: 
2012-01-14T21:49:18+00:00 app[web.1]: 
2012-01-14T21:49:18+00:00 app[web.1]: Started GET "/assets/rails.png" for 216.251.147.10 at 2012-01-14 13:49:18 -0800
2012-01-14T21:49:18+00:00 app[web.1]: 
2012-01-14T21:49:18+00:00 app[web.1]: ActionController::RoutingError (No route matches [GET] "/assets/rails.png"):
2012-01-14T21:49:18+00:00 app[web.1]: 
2012-01-14T21:49:18+00:00 app[web.1]:   
2012-01-14T21:49:18+00:00 app[web.1]: 
2012-01-14T21:49:18+00:00 app[web.1]: cache: [GET /assets/rails.png] miss
2012-01-14T21:49:18+00:00 heroku[router]: GET mmcarrier.heroku.com/assets/rails.png dyno=web.1 queue=0 wait=0ms service=4ms status=404 bytes=728
2012-01-14T21:49:33+00:00 app[web.1]: cache: [GET /] miss
2012-01-14T21:49:33+00:00 app[web.1]: 
2012-01-14T21:49:33+00:00 app[web.1]: 
2012-01-14T21:49:33+00:00 app[web.1]: Started GET "/assets/rails.png" for 216.251.147.10 at 2012-01-14 13:49:33 -0800
2012-01-14T21:49:33+00:00 app[web.1]: 
2012-01-14T21:49:33+00:00 app[web.1]: ActionController::RoutingError (No route matches [GET] "/assets/rails.png"):
2012-01-14T21:49:33+00:00 app[web.1]:   
2012-01-14T21:49:33+00:00 app[web.1]: 
2012-01-14T21:49:33+00:00 app[web.1]: cache: [GET /assets/rails.png] miss
2012-01-14T21:49:33+00:00 app[web.1]: 
2012-01-14T21:49:34+00:00 app[web.1]: cache: [GET /favicon.ico] miss
2012-01-14T21:49:33+00:00 heroku[router]: GET mmcarrier.heroku.com/ dyno=web.1 queue=0 wait=0ms service=6ms status=200 bytes=5907
2012-01-14T21:49:33+00:00 heroku[router]: GET mmcarrier.heroku.com/assets/rails.png dyno=web.1 queue=0 wait=0ms service=4ms status=404 bytes=728
2012-01-14T21:49:34+00:00 heroku[router]: GET mmcarrier.heroku.com/favicon.ico dyno=web.1 queue=0 wait=0ms service=3ms status=200 bytes=0
2012-01-14T21:50:21+00:00 app[web.1]: cache: [GET /] miss
2012-01-14T21:50:21+00:00 heroku[router]: GET mmcarrier.heroku.com/ dyno=web.1 queue=0 wait=0ms service=4ms status=200 bytes=5907
2012-01-14T21:50:21+00:00 app[web.1]: 
2012-01-14T21:50:21+00:00 heroku[router]: GET mmcarrier.heroku.com/assets/rails.png dyno=web.1 queue=0 wait=0ms service=4ms status=404 bytes=728
2012-01-14T21:50:21+00:00 app[web.1]: Started GET "/assets/rails.png" for 216.251.147.10 at 2012-01-14 13:50:21 -0800
2012-01-14T21:50:21+00:00 app[web.1]: 
2012-01-14T21:50:21+00:00 app[web.1]: 
2012-01-14T21:50:21+00:00 app[web.1]: cache: [GET /assets/rails.png] miss
2012-01-14T21:50:21+00:00 app[web.1]: ActionController::RoutingError (No route matches [GET] "/assets/rails.png"):
2012-01-14T21:50:21+00:00 app[web.1]:   
2012-01-14T21:50:21+00:00 app[web.1]: 
2012-01-14T21:50:21+00:00 app[web.1]: 
2012-01-14T21:52:42+00:00 heroku[slugc]: Slug compilation started
2012-01-14T21:52:54+00:00 heroku[api]: Deploy 983a24d by m73mitchell@gmail.com
2012-01-14T21:52:54+00:00 heroku[api]: Release v8 created by m73mitchell@gmail.com
2012-01-14T21:52:54+00:00 heroku[web.1]: State changed from up to bouncing
2012-01-14T21:52:54+00:00 heroku[web.1]: State changed from bouncing to created
2012-01-14T21:52:54+00:00 heroku[web.1]: State changed from created to starting
2012-01-14T21:52:55+00:00 heroku[slugc]: Slug compilation finished
2012-01-14T21:53:01+00:00 heroku[web.1]: State changed from starting to up
2012-01-14T21:53:05+00:00 heroku[router]: GET mmcarrier.heroku.com/assets/rails.png dyno=web.1 queue=0 wait=0ms service=37ms status=404 bytes=728
2012-01-14T21:53:17+00:00 heroku[router]: GET mmcarrier.heroku.com/assets/rails.png dyno=web.1 queue=0 wait=0ms service=5ms status=404 bytes=728
2012-01-14T21:53:36+00:00 heroku[router]: GET mmcarrier.heroku.com/assets/rails.png dyno=web.1 queue=0 wait=0ms service=2ms status=404 bytes=728
2012-01-14T21:53:38+00:00 heroku[router]: GET mmcarrier.heroku.com/ dyno=web.1 queue=0 wait=0ms service=107ms status=500 bytes=728
2012-01-14T21:53:40+00:00 heroku[router]: GET mmcarrier.heroku.com/ dyno=web.1 queue=0 wait=0ms service=20ms status=500 bytes=728
2012-01-14T21:53:49+00:00 heroku[run.1]: State changed from created to starting
2012-01-14T21:53:52+00:00 heroku[run.1]: State changed from starting to up
2012-01-14T21:53:57+00:00 heroku[run.1]: State changed from up to complete
2012-01-14T21:53:57+00:00 heroku[run.1]: Process exited
2012-01-14T21:55:15+00:00 heroku[router]: GET mmcarrier.heroku.com/assets/rails.png dyno=web.1 queue=0 wait=0ms service=35ms status=404 bytes=728
2012-01-14T21:55:17+00:00 heroku[router]: GET mmcarrier.heroku.com/assets/rails.png dyno=web.1 queue=0 wait=0ms service=3ms status=404 bytes=728
2012-01-14T21:55:22+00:00 heroku[router]: GET mmcarrier.heroku.com/ dyno=web.1 queue=0 wait=0ms service=12ms status=500 bytes=728
2012-01-14T21:56:18+00:00 heroku[router]: GET mmcarrier.heroku.com/ dyno=web.1 queue=0 wait=0ms service=12ms status=500 bytes=728

Ответы [ 3 ]

11 голосов
/ 14 мая 2012

Нет необходимости прекомпилировать и беспорядок ваш мерзавец!

heroku прекомпилирует ваши активы

с рельсами 3.1.x Вы добавили это в application.rb

config.assets.initialize_on_precompile = false

ОБНОВЛЕНИЕ 16 июля 2012

также рельсы 3.2.x

похоже, проблема с ActiveRecord и database.yml!Если вы не используете обычную базу данных, но используете MongoDB, вам не понадобится вышеуказанное.Однако, если вы это сделаете, вам нужно будет отключить инициализацию, так как activerecord читает таблицы базы данных при инициализации, но база данных недоступна на этапе предкомпиляции на heroku.

с MongoDB - в этом нет необходимости .

/ ОБНОВЛЕНИЕ

рельсы 3.2.x : посмотрите на верхнюю часть application.rb .Комментарии OMA мои, добавлены для ясности

if defined?(Bundler)
  # If you precompile assets before deploying to production, use this line
  "OMA - comment this line"
  #Bundler.require(*Rails.groups(:assets => %w(development test)))
  # If you want your assets lazily compiled in production, use this line
  "OMA - uncomment this line"
  Bundler.require(:default, :assets, Rails.env)
end
9 голосов
/ 15 января 2012

Похоже, что вы, возможно, не скомпилировали свои активы до того, как отправили их в Heroku, попробуйте:

rake assets:precompile
git add .
etc etc

Я думаю, что это должно помочь.Для получения дополнительной информации см. Здесь: http://devcenter.heroku.com/articles/rails31_heroku_cedar

2 голосов
/ 15 июня 2012

Чтобы получить ленивую инициацию, работая с тонкими (на героку) с рельсами 3.2.3 мне пришлось сделать:

В config / application.rb:

if defined?(Bundler)
  # If you precompile assets before deploying to production, use this line
  # Bundler.require(*Rails.groups(:assets => %w(development test)))
  # If you want your assets lazily compiled in production, use this line
  Bundler.require(:default, :assets, Rails.env)
end

...


module Romulo
  class Application < Rails::Application

...

    # Enable the asset pipeline
    config.assets.enabled = true

    # Version of your assets, change this if you want to expire all your assets
    config.assets.version = '1.0'

    # get precompilation working on heroku:
    config.assets.initialize_on_precompile = true

    config.serve_static_assets = false
  end
end

В конфиге / окружении/production.rb:

# Compress JavaScripts and CSS
config.assets.compress = true

# Don't fallback to assets pipeline if a precompiled asset is missed
config.assets.compile = true

# Generate digests for assets URLs
config.assets.digest = true

Нет необходимости прекомпилировать активы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...