1

我正在尝试通过为自己创建一个博客并将其部署在 Heroku 上来学习 Rails,但我在自定义 gem 上遇到了 NoMethodError。一切都在开发中本地工作,但在移动到生产时我一直遇到错误。

Processing by HomeController#index as HTML
2012-08-18T02:17:11+00:00 app[web.1]:   Rendered home/index.html.erb within layouts/application (4.1ms)
2012-08-18T02:17:11+00:00 app[web.1]: Completed 500 Internal Server Error in 19ms
2012-08-18T02:17:11+00:00 app[web.1]: 
2012-08-18T02:17:11+00:00 app[web.1]: ActionView::Template::Error (undefined method `bbcode_to_html' for #<String:0x000000032ee278>):
2012-08-18T02:17:11+00:00 app[web.1]:     3:    <p class="article_body"><%= raw Post.last.body.bbcode_to_html %></p>
2012-08-18T02:17:11+00:00 app[web.1]:     1: <div id="homepage_headline">
2012-08-18T02:17:11+00:00 app[web.1]:     4: </div>
2012-08-18T02:17:11+00:00 app[web.1]: 
2012-08-18T02:17:11+00:00 app[web.1]:     2:    <h1 class="article_title_headlines"><%= link_to "#{Post.last.title}", post_path(Post.last) %></h1>
2012-08-18T02:17:11+00:00 app[web.1]: 
2012-08-18T02:17:11+00:00 app[web.1]:   app/views/home/index.html.erb:3:in `_app_views_home_index_html_erb__3063155323426577095_38919220'

我在我的 Gemfile 中包含了 bb-ruby,如下所示:

group :production do
    gem 'thin'
    gem 'pg'
    gem 'bb-ruby', '0.9.6', :path => 'vendor/bb-ruby'
end
...
gem 'bb-ruby', '0.9.6', :path => 'vendor/bb-ruby'

我试过在视图中要求 bb-ruby,但是 Heroku 给了我一个找不到文件的错误。

我想我的主要问题是:Heroku 上的生产和我的机器上的开发有什么区别?除了我从 evironments 的配置文件中可以看出的内容之外。到目前为止,我所知道的是 Heroku 需要预编译 javascript 和 css 等资产。但是宝石呢?我还没有找到关于如何在 Heroku 中使用自定义 gem 的很好的解释。我很感激任何帮助。

更新:通过使用 bb-ruby 0.9.5 版,我已经能够让应用程序正常工作。0.9.6 版是我自己创建的版本(正在开发中),但在 Heroku 中引起了问题,我认为是因为我自己打包并指定了路径。

4

2 回答 2

0

不要指定路径,Heroku 会覆盖它,默认值很好,除非你知道得更好。您还需要没有特定组的 pg 和 bb-ruby,因为您到处都需要它。

于 2012-08-18T02:44:00.383 回答
0

为了使用您自己的自定义版本,请在 github 中 fork gem,进行自己的更改,然后使用 gemfile 中的 :git 选项指向它。

于 2012-08-18T14:39:02.043 回答