【问题标题】:How can I access this helper function in production?如何在生产中访问此辅助功能?
【发布时间】:2012-07-29 13:42:45
【问题描述】:

我正在使用private_pub 向我的用户推送订阅客户端的通知。在我的 application.html.haml 我有:

...
= javascript_include_tag 'application'
= subscribe_to "/#{@user.access_token}/notifications"
...

subscribe_to 助手在开发中工作正常。部署到生产环境时,会记录以下错误:

ActionView::Template::Error (undefined method `subscribe_to' for #<#<Class:0x00000001f372e8>:0x00000001fded90>):
    5:     = stylesheet_link_tag 'application', :media => 'all'
    6:     = include_gon(:init => true)
    7:     = javascript_include_tag 'application'
    8:     = subscribe_to "/#{@user.access_token}/notifications"
    9:     = csrf_meta_tags
    10: 
    11:   %body
  app/views/layouts/application.html.haml:8:in `_app_views_layouts_application_html_haml__1867651381877570337_14592040'

如何在生产环境中访问此辅助方法?

【问题讨论】:

  • bundle install 将其添加到 gemfile 后是否在生产中?
  • 是的,我的部署脚本运行捆绑安装
  • 你运行的 Rails 版本是什么?
  • 当前运行 rails 3.2.7
  • 有没有机会将gem "private_pub" 放入Gemfile 的组中?

标签: ruby-on-rails ruby-on-rails-3 helper


【解决方案1】:

这看起来像是加载 PrivatePub 引擎的错误。如果您查看engine.rb,您会看到它正在将 PrivatePub 视图助手添加为 init 的一部分。如果它是为开发而不是生产环境加载的,则可能是一个错误。

尝试创建一个手动加载 PrivatePub 帮助程序的配置/初始化程序:

require 'private_pub/view_helpers'
ActionView::Base.send :include, PrivatePub::ViewHelpers

【讨论】:

  • 我无法在初始化程序中访问 private_pub/view_helpers。我得到一个 LoadError
  • 您的生产宝石有问题。我刚刚创建了一个新的 Rails 3 项目并测试了初始化程序,它加载没有问题。如果 require 失败,则意味着未加载 private_pub gem。你用什么命令来运行你的 Rails 服务器?
  • 是的,我的 Debian 服务器似乎因此而失败,但在不同的服务器硬件堆栈上运行 Ubuntu 工作正常。
【解决方案2】:

您的部署脚本是否启动了 Faye 的机架文件? rackup private_pub.ru -s thin -E production

【讨论】:

  • 是的,我可以加载 faye.js 文件就好了。当我部署 rails 应用程序时,它找不到方法 subscribe_to
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-22
  • 1970-01-01
  • 2023-03-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多