2017-09-20 36 views
0

我已经离开Ruby on Rails开发一段时间了,经历了几次系统更新。这发生在Mac OS X Sierra及其系统版本的Ruby(2.0.0p648)和Rails 4.0.2上。在现有目录中创建新的Ruby on Rails应用程序

appname目录不存在时,创建新应用程序(rails new appname)可正常工作---该命令会创建应用程序并按其应用程序填充该应用程序。然而,尽管所有的指导手册和教程都说了,但如果存在这样的目录(即使它是空的),它也会失败。您还不能创建一个空目录,进入这个目录,并运行rails new .

失败的命令的输出看起来是这样的:

存在
/Library/Ruby/Gems/2.0.0 /gems/railties-4.0.2/lib/rails/generators/app_base.rb:97:in create_root': uninitialized constant Rails::Generators::AppBase::FileUtils (NameError) from (eval):1:in create_root'from /Library/Ruby/Gems/2.0.0/gems/thor-0.20.0/lib/thor /command.rb:27:in run' from /Library/Ruby/Gems/2.0.0/gems/thor-0.20.0/lib/thor/invocation.rb:126:in invoke_command'from /Library/Ruby/Gems/2.0.0/gems/thor-0.20.0/lib/thor/invocation.rb:133:in block in invoke_all' from /Library/Ruby/Gems/2.0.0/gems/thor-0.20.0/lib/thor/invocation.rb:133:in 从 /Library/Ruby/Gems/2.0每个 '从 /Library/Ruby/Gems/2.0.0/gems/thor-0.20.0/lib/thor/invocation.rb:133:in map' from /Library/Ruby/Gems/2.0.0/gems/thor-0.20.0/lib/thor/invocation.rb:133:in invoke_all'。 0/gems/thor-0.20.0/lib/thor/group.rb:232: dispatch' from /Library/Ruby/Gems/2.0.0/gems/thor-0.20.0/lib/thor/base.rb:466:in start'from /Library/Ruby/Gems/2.0.0/gems/railties-4.0.2/lib/rails/命令/ application.rb中:43:在 <top (required)>' from /Library/Ruby/Site/2.0.0/rubygems/core_ext/kernel_require.rb:68:in '从 /Library/Ruby/Site/2.0.0/rubygems/core_ext/kernel_require.rb:68:in require' from /Library/Ruby/Gems/2.0.0/gems/railties-4.0.2/lib/rails/cli.rb:15:in ' 需要来自 /Library/Ruby/Site/2.0 .0/ruby​​gems/core_ext/kernel_require.rb:68: require' from /Library/Ruby/Site/2.0.0/rubygems/core_ext/kernel_require.rb:68:in require'from /Library/Ruby/Gems/2.0.0/gems/railties-4.0.2/bin/rails :9:<top (required)>' from /usr/bin/rails:22:in负载“从 在/ usr/bin中/导轨:22:在'”

我怎么轨能够创建在现有目录中的应用程序?

回答

1

在没有结果的在线搜索相同的问题后,我直接去了报道的源代码:/Library/Ruby/Gems/2.0.0/gems/railties-4.0.2/lib/rails/generators/app_base的第97行.RB。该行看起来是这样的:

FileUtils.cd(destination_root) unless options[:pretend]

根据错误信息,它不能找到FileUtils,把它当作一个未初始化的常数。此行也是使用FileUtils的app_base.rb文件中的唯一位置。

我去了文件的顶部,并添加require 'fileutils'到它的要求。我保存了它(这需要管理员密码),并且rails new .完美地工作。

虽然这解决了眼前的问题,但我仍然有疑问。这是否总是存在,我没有注意到,或者是在升级后出现,我猜测(很可能是从Ruby 1.8或1.9到Ruby 2.0)。什么改变导致它?

相关问题