1

Heroku でホストされている Ruby on Rails 3.2.13 アプリケーションで、ローカルに複製できず、原因を特定できない奇妙なバグに遭遇しました。

症状は次のとおりです。

いくつかのページで、「申し訳ありませんが、問題が発生しました」という恐ろしいエラーが表示されます。

ここに画像の説明を入力

ログは、テンプレート エラーがあることを示しています。

  Started GET "/users/sign_in" for 107.203.222.41 at 2013-05-27 13:45:18 +0000

  ActionView::Template::Error (syntax error on line 6, col 15: `'):
   15:   <%= f.password_field :password %></div>
   16: 
   21:   <div><%= f.submit "Sign in" %></div>
   19:   <% end -%>
   17:   <% if devise_mapping.rememberable? -%>
   18:     <div><%= f.check_box :remember_me %> <%= f.label :remember_me %></div>
 app/views/devise/sessions/new.html.erb:8:in `_app_views_devise_sessions_new_html_erb__2053461519121638579_44147620'
 app/views/devise/sessions/new.html.erb:18:in `block in _app_views_devise_sessions_new_html_erb__2053461519121638579_44147620'
   20: 

行番号が乱れていることに注意してください。

別のページの例を次に示します。

  Started GET "/blog" for 107.203.222.41 at 2013-05-27 13:36:10 +0000

  ActionView::Template::Error (syntax error on line 6, col 15: `'):
  10:     <%= render :partial => "post", :collection => @posts %>
  13:   <% end %>

  9:   <%= content_tag(:div, :id => 'blog_content') do %>
  11: 
  12:     <%= will_paginate @posts, :page_links => false %>
  14: 
  15:   <%= render 'sidebar' %>
  app/views/posts/blog.html.erb:12:in `block (2 levels) in _app_views_posts_blog_html_erb___3437273290190956225_40741600'
  app/views/posts/blog.html.erb:9:in `block in _app_views_posts_blog_html_erb___3437273290190956225_40741600'
  app/views/posts/blog.html.erb:7:in `_app_views_posts_blog_html_erb___3437273290190956225_40741600'

このエラーの原因は何ですか?「6行目、15列目」が何を指しているのかを正確に特定するにはどうすればよいですか?

とても有難い!

編集

これは私には意味がありませんが、問題を引き起こしている行は次のとおりです。

 <% if devise_mapping.rememberable? -%>
   <div>
        <%= f.check_box :remember_me %>
        <%#= f.label :remember_me %>
    </div>
 <% end -%>

f.label 行をコメントアウトすると、ページは正常に読み込まれます。コメントを外すと、その構文エラーが発生します。これは何が原因でしょうか?

編集2

ファイルを最初から再作成し、コードの関連部分を入力しました。

<%= form_for(resource, :as => resource_name, :url => session_url(resource_name), :autocomplete => 'off') do |f| %>
    <div>
         <%= f.check_box :remember_me %>
         <%#= f.label :remember_me %>
    </div>
<% end %>

同じ問題: f.label 行がコメント化されると、ページが読み込まれます。コメントを外すと、同じ構文エラーが発生します。

 ActionView::Template::Error (syntax error on line 6, col 15: `')
4

1 に答える 1

1

これは、en.yml の YAML に問題があることがわかりました。

具体的には、YAML はもともと次のとおりでした。

# Sample localization file for English. Add more files in this directory for other locales.
# See https://github.com/svenfuchs/rails-i18n/tree/master/rails%2Flocale for starting points.

en:
  activerecord:
    models:
    attributes:

これをhttp://yamllint.com/のようなものにプラグインすると、本番ログに表示されていたエラー メッセージが表示されます。

syntax error on line 6, col 15: `'

これを Rails のデフォルトに戻すと、問題が修正されました。

# Sample localization file for English. Add more files in this directory for other locales.
# See https://github.com/svenfuchs/rails-i18n/tree/master/rails%2Flocale for starting points.

en:
  hello: "Hello world"

このスレッドには、Rails での YAML 解析に関する詳細情報があり、原因を特定することができました: Rails エラー、YAML を解析できませんでした

于 2013-05-27T16:53:44.657 に答える