2015-05-15 3 views
0

Приложение отлично работает в разработке (локальном сервере), но не в производстве. У меня есть следующие в журналах Heroku (я редактировал журналы, чтобы быть легче читать, я просто включали то, что я думаю, являются ошибки):Ошибка приложения Ruby on Rails при развертывании heroku

2015-05-15T23:58:43.894626+00:00 app[web.1]: Rendered layouts/_header.html.erb (8.5ms) 
2015-05-15T23:58:43.885011+00:00 app[web.1]: Rendered movies/index.html.erb within layouts/application (17.5ms) 
2015-05-15T23:58:43.896788+00:00 app[web.1]: ActionView::Template::Error (undefined method `scard' for nil:NilClass): 
2015-05-15T23:58:43.896785+00:00 app[web.1]: 
2015-05-15T23:58:43.896790+00:00 app[web.1]:  19:   <%if signed_in?%> 
2015-05-15T23:58:43.896791+00:00 app[web.1]:  20:   <li> 
2015-05-15T23:58:43.896794+00:00 app[web.1]:  22:    <i class="fi-shopping-cart"></i> My Cart (<span class="cart-count"><%=current_user.cart_count%></span>) 
2015-05-15T23:58:43.896793+00:00 app[web.1]:  21:    <%= link_to cart_path do%> 
2015-05-15T23:58:43.896796+00:00 app[web.1]:  23:    <%end%> 
2015-05-15T23:58:43.896797+00:00 app[web.1]:  24:   </li> 
2015-05-15T23:58:43.896799+00:00 app[web.1]:  25:   <li><%=link_to current_user.email, edit_user_registration_path%></li> 
2015-05-15T23:58:43.896801+00:00 app[web.1]: app/models/user.rb:36:in `cart_count' 

2015-05-15T23:58:33.939033+00:00 app[web.1]: Completed 500 Internal Server Error in 3ms 
2015-05-15T23:58:33.933343+00:00 app[web.1]: Started GET "/movies/2" for 160.9.1.112 at 2015-05-15 23:58:33 +0000 
2015-05-15T23:58:33.935944+00:00 app[web.1]: Processing by MoviesController#show as HTML 
2015-05-15T23:58:33.935966+00:00 app[web.1]: Parameters: {"id"=>"2"} 
2015-05-15T23:58:33.938157+00:00 app[web.1]: Movie Load (1.3ms) SELECT "movies".* FROM "movies" WHERE "movies"."id" = $1 LIMIT 1 [["id", 2]] 
2015-05-15T23:58:33.939854+00:00 app[web.1]: 
2015-05-15T23:58:33.939856+00:00 app[web.1]: NoMethodError (undefined method `sismember' for nil:NilClass): 
2015-05-15T23:58:33.939858+00:00 app[web.1]: app/models/movie.rb:20:in `cart_action' 
2015-05-15T23:58:33.939859+00:00 app[web.1]: app/controllers/movies_controller.rb:9:in `show' 

2015-05-15T23:58:28.575297+00:00 app[web.1]: Started GET "/movies/1" for 160.9.1.112 at 2015-05-15 23:58:28 +0000 
2015-05-15T23:58:28.581745+00:00 app[web.1]: Parameters: {"id"=>"1"} 
2015-05-15T23:58:28.635038+00:00 app[web.1]: Completed 500 Internal Server Error in 53ms 
2015-05-15T23:58:28.581412+00:00 app[web.1]: Processing by MoviesController#show as HTML 
2015-05-15T23:58:28.618562+00:00 app[web.1]: Movie Load (1.6ms) SELECT "movies".* FROM "movies" WHERE "movies"."id" = $1 LIMIT 1 [["id", 1]] 
2015-05-15T23:58:28.636023+00:00 app[web.1]: 
2015-05-15T23:58:28.636027+00:00 app[web.1]: NoMethodError (undefined method `sismember' for nil:NilClass): 
2015-05-15T23:58:28.636029+00:00 app[web.1]: app/models/movie.rb:20:in `cart_action' 
2015-05-15T23:58:28.636031+00:00 app[web.1]: app/controllers/movies_controller.rb:9:in `show' 

movie.rb:

class Movie < ActiveRecord::Base 
    has_many :purchases 
    has_many :buyers, through: :purchases 

    before_save :embed_video_url 

    def poster 
    "http://ia.media-imdb.com/images/M/#{poster_url}" 
    end 

    def imdb 
    "http://www.imdb.com/title/#{imdb_id}/" 
    end 

    def embed_video_url 
    self.video_url = "//www.youtube.com/embed/#{video_url.split('v=')[1].split('&list')[0]}" 
    end 

    def cart_action(current_user_id) 
    if $redis.sismember "cart#{current_user_id}", id 
     "Remove from" 
    else 
     "Add to" 
    end 
    end 
end 

Я последовал официальный гид от Heroku «https://devcenter.heroku.com/articles/redistogo» Даже тест хорошо работать, но косяка запустить в производство я знаю, что это исчерпывает, чтобы проверить все эти линии так, я буду признателен за любую помощь PS: В разработке/локальном сервере работает отлично

+0

пожалуйста, предоставьте нам свою модель 'movie.rb', а также контроллера фильмов – Cyzanfar

+0

есть вы добавили что-то, чтобы обеспечить Redis на Heroku (Redis пойти/Redis облака/??) не включается по умолчанию – Doon

+0

я redis.rb с этими линиями: = URI URI.parse (ENV [ "REDISTOGO_URL"]) REDIS = Redis.new (: URL => URI) Я также попытался изменить код, но в штрафной обработанное .I последовал за официальным redis по установке heroku – John

ответ

0

Ошибка появляется в журналах. См. Внимательно.

NoMethod Error (undefined method sismember' for nil:NilClass): 2015-05 15T20:59:10.873219+00:00 app[web.1]: app/models/movie.rb:20:incart_action' 
+0

вы только изолировали ошибку, но не дали никакого решения проблемы – Cyzanfar

+0

да, вероятно, redis не развернут на героку. Я попытался исправить это, но ничего – John

Смежные вопросы