如题,遇到了 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 自身维护的文件。。。
#4 楼 @weiwei5987 Gemfile 是 Rails 自身维护的文件?
Gemfile 不是 Rails 的东西,而是 Bundler 的东西,不要搞混了,而 gem install xxx 是 RubyGems 的东西,也和 Gemfile 没有关系,所以当你 gem install xxx 的时候 Gemfile 当然不会有任何变动。
Gemfile
gem install xxx
Gemfile 就是用来定义项目的 gem 依赖关系的,本来就是手工维护的,你需要在里面声明需要的 gem 和 gem 的版本,这样项目拿到其他地方才能稳定的运行起来!
而 gem install xxx 是 RubyGems 提供的功能,这个算是 Ruby 系统级别的包管理,以前 Rails 没有引入 Bundler 的时候,Rails 需要的三方库也是用 RubyGems 来管理的。只是现在新版的 Rails 默认依赖 Bundler,必须用 Bundler 来管理 Gem。
哪怕你用 RubyGems 安装了某个 gem,而 Gemfile 里面没有声明它的时候,Rails 一样不会去调用那个 gem。
#6 楼 @huacnlee 非常感谢你的扫盲~~~谢谢谢谢
#6 楼 @huacnlee 这下我的 Rails 应该有望搭起来了~~