ruby-on-rails – Rails:不能包含pg_search Gem提供的PgSearch模块

总结一下 :

Gem pg_search提供的模块PgSearch无法在登台环境(Rbenv,nginx,unicorn,capistrano)中包含,加载或加载,问题在Web服务器上通过http发生,但不会出现在登台服务器的rails命令中.
可以包括由其他gem提供的其他模块而没有错误.

在本地开发环境(rvm,puma)没问题.

细节

我目前正在使用ruby 2.0.0开发Ruby On Rails 4.0应用程序,git存储库托管在bitbucket上.
我使用capistrano通过登台服务器部署应用程序.

>临时服务器环境:rbenv,nginx和unicorn
>当地的发展环境:rvm和puma

两者的rails environnment文件(environment / production.rb和environment / staging.rb)是相同的.

我做了什么:

我已经安装了pg_search gem(一个PostgreSQL全文搜索gem),将它添加到我的Gemfile中并将“include PgSearch”子句放在我想用于pg_search gem的Active Record模型中

我已经在开发模式下运行了应用程序……它有效!

问题:

将更改部署到登台服务器后:
通过http服务器我收到此错误:

App :: MyController #index中的NameError
未初始化的常量MyActiveRecordModel :: PgSearch

(通常,包含在GemFile中的这个pg_search gem应该包含自动加载搜索路径中的lib / * .rb文件和加载“pg_search.rb”之类的子句,需要“pg_search”或“include PgSearch”(包括模块)在pg_search.rb文件中)应该通过.

为了找到修复bug的线索,我有:

如果由gem提供的其他模块可以被包括在内……它可以工作

在访问了临时服务器的当前版本路径之后,我运行“bundle exec rails c staging”并尝试:

>看看ActiveRecord模型(我包括PgSearch)的实例是否有效.
>查看是否可以在服务器上找到/加载gem提供的模块
我执行了 – 包括PgSearch并要求“pg_search”并加载“pg_search.rb”.

所有这些命令都是成功的.

我没有想法找到其他一些线索,请问您有什么建议吗?

谢谢.

最佳答案 重启rails服务器

Gems引入了rails需要访问的新代码.要使新代码可用于Rails,我们将执行3个步骤:

>更改Gemfile
>捆绑安装
>重启rails服务器

> When do I need to restart the rails server?

很容易忘记一步.

点赞