Rails 我已经 gem install 了 execjs 和 therubyracer,为何 Gemfile 中却没有

weiwei5987 · 2012年07月24日 · 最后由 weiwei5987 回复于 2012年07月25日 · 4736 次阅读

如题,遇到了 autodetect': Could not find a JavaScript runtime.这个错误,网上都是说的直接修改 Gemfile,觉得有点暴力,就想 gem install execjs 和 therubyracer 应该可以,结果却不是我想的那样。请指导。

没加进 Gemfile 的 gem,Rails 不会 load。

为何暴力?

#1 楼 @Rei 没注意到,但之前我 gem install 的 coffee-rails,mysql2 神马的都在 Gemfile 里有了,就最后这两个没。。。

#2 楼 @huobazi 感觉直接修改了 Rails 自身维护的文件。。。

匿名 #6 2012年07月25日

#4 楼 @weiwei5987 Gemfile 是 Rails 自身维护的文件?

Gemfile 不是 Rails 的东西,而是 Bundler 的东西,不要搞混了,而 gem install xxx 是 RubyGems 的东西,也和 Gemfile 没有关系,所以当你 gem install xxx 的时候 Gemfile 当然不会有任何变动。


Gemfile 应该说 Bundler

Gemfile 就是用来定义项目的 gem 依赖关系的,本来就是手工维护的,你需要在里面声明需要的 gem 和 gem 的版本,这样项目拿到其他地方才能稳定的运行起来!

RubyGems

gem install xxx 是 RubyGems 提供的功能,这个算是 Ruby 系统级别的包管理,以前 Rails 没有引入 Bundler 的时候,Rails 需要的三方库也是用 RubyGems 来管理的。只是现在新版的 Rails 默认依赖 Bundler,必须用 Bundler 来管理 Gem。

哪怕你用 RubyGems 安装了某个 gem,而 Gemfile 里面没有声明它的时候,Rails 一样不会去调用那个 gem。

#6 楼 @huacnlee 非常感谢你的扫盲~~~谢谢谢谢

#6 楼 @huacnlee 这下我的 Rails 应该有望搭起来了~~

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