Ошибка Rails в производственной среде, возможно из-за link_tag и прекомпиляции - PullRequest
4 голосов
/ 12 сентября 2011

Я установил rails 3.1 с apache2 и passenger на ubuntu 10.04. используя ruby 1.9.2 с RVM. Когда я загружаю приложение в браузер в производственном режиме (на моем компьютере отлично работает версия для разработки), оно не работает.

Мой журнал ошибок производства:

Started GET "/articles" for 117.230.75.50 at 2011-09-12 13:51:34 +0000
Processing by ArticlesController#index as HTML
Rendered articles/index.html.erb within layouts/application (56.4ms)
Completed 500 Internal Server Error in 126ms

ActionView::Template::Error (application.css isn't precompiled):
    2: <html>
    3: <head>
    4:   <title>Youexpress</title>
    5:   <%= stylesheet_link_tag    "application" %>
    6:   <%= javascript_include_tag "application" %>
    7:   <%= csrf_meta_tags %>
    8: </head>
  app/views/layouts/application.html.erb:5:in `_app_views_layouts_application_html_erb__385712067674585148_29380260'
  app/controllers/articles_controller.rb:7:in `index'

Но когда я удаляю теги link_tags в app / views / layouts / application.html.erb следующим образом, приложение отлично работает в рабочем режиме.

<!DOCTYPE html>
<html>
<head>
  <title>Youexpress</title>
</head>
<body>

<%= yield %>

</body>
</html>

Как мне обойти это? Когда я делаю bundle exec rake assets:precompile, я получаю следующую ошибку:

rake aborted!
no such file to load -- uglifier
  (in /home/username/youexpress/vendor/bundle/ruby/1.9.1/gems/jquery-rails-1.0.14/vendor/assets/javascripts/jquery-ui.min.js)

Примечание. В приведенной выше ошибке отображается ruby ​​/ 1.9.1, а не 1.9.2 (я установил 1.9.2)

Пожалуйста, помогите с моей ситуацией.

Спасибо

1 Ответ

6 голосов
/ 13 сентября 2011

Я нашел ответ сам, причина ошибки в том, что приложению rails требуется время выполнения javascript для работы некоторых функций sass, coffeescript и uglifier.

Есть много способов решить эту проблему, установив javascript runtime, например nodejs

Но, решение, которое я выбрал, и, возможно, самое простое, это добавить gem 'therubyracer' к моему Gemfile и затем запустить bundle install

Выдержка из моего Gemfile ниже

# Gems used only for assets and not required
# in production environments by default.
group :assets do
  gem 'therubyracer'
  gem 'sass-rails', "  ~> 3.1.0"
  gem 'coffee-rails', "~> 3.1.0"
  gem 'uglifier'
end

добавление therubyracer также исправляет rake assets:precompile

Надеюсь, это поможет. Я потратил несколько дней на поиск этого решения.

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