Я использую Rails 3.1.1 и получаю странную ошибку. В процессе разработки (еще не пробовал запускать его в производство) я иногда получаю ошибки маршрутизации в моем контроллере или в шаблоне почтовой программы, когда он пытается сгенерировать URL для вновь созданной записи. Это происходит, даже если запись создана успешно и, похоже, не имеет ничего общего со свойствами записи (я могу сразу после этого воссоздать запись с точно такими же параметрами и не получить ошибку, она кажется совершенно случайной, когда это происходит).
Кажется, это случается, может быть, один раз в 10 раз, хотя я не могу сказать, что когда-либо видел, как это происходило до того, как я добавил действие почтовой программы.
Есть еще один потенциально усложняющий фактор: я использую метод шифрования, чтобы скрыть идентификатор записи в ее URL, но в остальном это работает без проблем. Для этого я адаптировал рассмотренный метод здесь
Мне кажется, что URL не генерируется вовремя, чтобы link_to вызывал время от времени ... Но это не имеет особого смысла для меня. Я не думал, что мне нужно волноваться об условиях гонки.
Вот мои журналы ошибок, когда это происходит в контроллере (когда параметры не требуют генерации электронной почты):
ActionController::RoutingError (No route matches {:action=>"show", :controller=>"watch_lists", :id=>#<WatchList id: 195, title: "sfdsfd", created_at: "2012-03-19 05:18:46", updated_at: "2012-03-19 05:18:46", public_list: false>}):
app/controllers/watch_lists_controller.rb:72:in `block (2 levels) in create'
app/controllers/watch_lists_controller.rb:56:in `create'
И вот когда это происходит в шаблоне почтовой программы (когда параметры действительно требуют создания электронного письма перед командой рендера):
Rendered watch_list_mailer/share_notification.html.erb (3.2ms)
Completed 500 Internal Server Error in 113ms
ActionView::Template::Error (No route matches {:action=>"show", :controller=>"watch_lists", :id=>#<WatchList id: 210, title: "sdggsgsg", created_at: "2012-03-19 05:47:17", updated_at: "2012-03-19 05:47:17", public_list: true>}):
20: <% end %>
21: <% end %><br>
22: <br>
23: Here's a link to your WatchList: <%= link_to @wl.title, watch_list_url(@wl) %><br>
24: <br>
25: Enjoy!
26: </p>
app/views/watch_list_mailer/share_notification.html.erb:23:in `_app_views_watch_list_mailer_share_notification_html_erb___1391186431365383285_70156615518000'
app/mailers/watch_list_mailer.rb:12:in `share_notification'
app/controllers/watch_lists_controller.rb:124:in `share_notification'
app/controllers/watch_lists_controller.rb:68:in `block (2 levels) in create'
app/controllers/watch_lists_controller.rb:63:in `each'
app/controllers/watch_lists_controller.rb:63:in `block in create'
app/controllers/watch_lists_controller.rb:56:in `create'
РЕДАКТИРОВАТЬ: После дальнейшего тестирования это происходит независимо от того, включаю ли я почтовое задание. Скорее всего, подстегнутая запутывание ссылок. Вполне возможно, что кодирование ссылок как-то связано с этим (я должен был убедиться, что URI-экранирует их, чтобы предотвратить косые черты в неправильных местах в другом месте моего кода). Я исследую это далее и сообщу.