为什么使用`rails new`这么慢?

时间:2012-11-25 11:14:13

标签: ruby-on-rails ruby ruby-on-rails-3

版本是:

bash-3.2$ rails -v
Rails 3.2.9

我的红宝石是MacOSX上的内置红宝石:

bash-3.2$ ruby -v
ruby 1.8.7 (2012-02-08 patchlevel 358) [universal-darwin12.0]
bash-3.2$ which ruby 
/usr/bin/ruby

我的问题是,在rails newrun bundle install)的最后一步,似乎rails需要连接互联网才能下载一些软件包。通常我需要5分钟等待rails使用rails new创建任何项目。

我想知道我的计算机上的某些东西是否配置得不好。

另一个奇怪的事情是,在我完成rails new PROJECT_NAME后,它会显示:

Using sqlite3 (1.3.6)
Using uglifier (1.3.0) 
Your bundle is complete! Use `bundle show [gemname]` to see where a bundled gem is installed.

似乎已经安装了sqlite3,但是,当我尝试:

bash-3.2$ bundle show sqlite3
 Could not locate Gemfile

它仍然抱怨未安装sqlite3。也许这就是rails new缓慢的原因(Even sqlite3已安装一次。它仍然需要下载捆绑包)

bundle install之前,rails要求输入我的系统密码:

Enter your password to install the bundled RubyGems to your system

但由于bundle show sqlite3失败,我仍不确定这些软件包是否已安装到系统中。

有没有人知道为什么rails new在我的电脑上这么慢?谢谢!

2 个答案:

答案 0 :(得分:1)

另一种解决方案是使用RVM。它类似于rbenv。我个人使用RVM。我不会也不会建议使用gemsets。无论如何,Bundler完成了宝石版本的分离。

答案 1 :(得分:0)

  1. 检查bundle install的内容,即rails新序列中的最后一步。改为运行:
  2.   

    rails new appname -B

    -B标志告诉rails“跳过包”(reference)。然后进入app文件夹运行:

      

    bundle install --verbose

    检查输出中的潜在错误。

    1. 使用不同的Bundler版本可以为您提供不同的结果。所以试试other versions
    2.   

      gem uninstall bundler -v your-version-number

           

      gem install bundler -v new-version-number

      1. 2016年,我们获得了捆绑器v1.12.x,这导致一些用户体验slow bundle install issues。在这种情况下,使用1.11.2是更快的选择,直到他们修复它。