在rails控制器中需要ruby gems

Kir*_*Kir 9 ruby-on-rails apache2 passenger rvm

require 'rubygems'
require 'mechanize'

agent = Mechanize.new
page = agent.get("http://google.com/")
Run Code Online (Sandbox Code Playgroud)

这个简单的脚本工作正常.

但是,如果我'尝试添加 require 'rubygems'require 'mechanize'Rails的控制器,服务器为:

LoadError in NewsController#find
no such file to load -- mechanize
Run Code Online (Sandbox Code Playgroud)

我在Ubuntu 10.04服务器machnine上使用RVM.Ruby版本:1.9.2,Rails版本:3.0.3.服务器:Apache2下的Passanger.

PS如果我运行rails server并转到mysite.com:3000所有工作没有任何错误,所以Passanger有问题!

请帮我!

fli*_*ald 17

您不应该在控制器中需要宝石.这就是为什么Bundler被添加到Rails 3.只需将机械化添加到你的Gemfile就像这样

gem "mechanize"
Run Code Online (Sandbox Code Playgroud)

并运行

bundle install
Run Code Online (Sandbox Code Playgroud)

在命令行上.应用程序启动时将需要此处提到的任何gem.


Sim*_*tti 5

在Rails 3中管理依赖项的方法是使用Gemfile和Bundler.

编辑Gemfile并添加

gem "mechanize"
Run Code Online (Sandbox Code Playgroud)

然后跑

$ bundle install
Run Code Online (Sandbox Code Playgroud)

重启服务器.库将自动加载.无需手动需要RubyGems.