Rails 在 rails3 中 Gemfile 中设置的 gem 是怎么被 rails 找到并使用的呢?

lb563 · 2012年03月15日 · 最后由 lb563 回复于 2012年03月15日 · 3456 次阅读

想一个问题。在 rails 中在 Gemfile 中设置的 gem(例如:mysql2 ).

在我们执行 bundle install 后 他安装到系统 gem 路径下. 但是 rails 是怎么就找到这个 gem 包然后使用里面的代码呢?

是使用 mysql2 这个 gem 包文件目录下 lib 中的 mysql2.rb 这个文件做为入口吗?

是的话我猜想可能就是每个 gem 包的话 rails 都会自己到 lib 路径下找对应 gem 包名的 ruby 文件。

http://gembundler.com/rationale.html#setting-up-your-application-to-use-bundler

打开 config/application.rb

if defined?(Bundler)
  Bundler.require *Rails.groups(:assets => %w(production development test))
end


gem 的查找跟 LOAD_PATH 有关

http://guides.rubygems.org/what-is-a-gem/#requiring_code

Bundler 的责任,和 rails 无关。

#1 楼 @Rei 多谢。明白了果然是到对应 gem 包的 lib 目录中去拿。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号