在现有目录

时间:2017-09-20 19:24:04

标签: ruby-on-rails ruby macos rubygems

我已经离开Ruby on Rails开发一段时间了,经历了几次系统更新。这发生在Mac OS X Sierra上,其系统版本为Ruby(2.0.0p648)和Rails 4.0.2。

rails new appname目录不存在时,创建新应用程序(appname)工作正常 - 该命令创建应用程序并按其应有的方式填充它。然而,尽管所有的指南和教程都说,但是当这样的目录存在时(即使它是空的)它也会失败。您也无法创建一个空目录,cd进入该目录,然后运行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&#39;从   /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&#39;从   /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 各&#39;从   /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&#39;从   /Library/Ruby/Gems/2.0.0/gems/thor-0.20.0/lib/thor/group.rb:232:in   dispatch' from /Library/Ruby/Gems/2.0.0/gems/thor-0.20.0/lib/thor/base.rb:466:in 开始&#39;从   /Library/Ruby/Gems/2.0.0/gems/railties-4.0.2/lib/rails/commands/application.rb:43:in   <top (required)>' from /Library/Ruby/Site/2.0.0/rubygems/core_ext/kernel_require.rb:68:in 需要&#39;从   /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 &#39;从   /Library/Ruby/Site/2.0.0/rubygems/core_ext/kernel_require.rb:68:in   require' from /Library/Ruby/Site/2.0.0/rubygems/core_ext/kernel_require.rb:68:in 需要&#39;从   /Library/Ruby/Gems/2.0.0/gems/railties-4.0.2/bin/rails:9:in <top (required)>' from /usr/bin/rails:22:in loading&#39;从   / usr / bin / rails:22:在`&#39;

如何让rails能够在现有目录中创建应用程序?

2 个答案:

答案 0 :(得分:6)

在没有结果的在线搜索同样的问题之后,我直接到报告的来源:/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,将其视为未初始化的常量。此行也是app_base.rb文件中使用FileUtils的唯一位置。

我转到文件顶部,并将require 'fileutils'添加到其要求中。我保存了它(这需要管理员密码),rails new .完美无缺。

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

答案 1 :(得分:0)

对我来说,我只需要一种在现有目录中创建 Rails 应用程序的方法。

该目录中已经有一个 .git 文件夹,我还想使用当前应用程序用于 rails 应用程序的相同 git 存储库。

我是这样做的

我所要做的就是进入应用程序所在的文件夹:

cd myapp

然后在文件夹内创建 rails 应用程序,在此过程中跳过 git 以避免 git 冲突并指定 postgresql 作为我的数据库:

rails new . --database=postgresql --skip-git

注意:现有项目没有 .gitignore 文件,因此由于我的 rails new 命令跳过了 git,我不得不手动创建 {{1} } 文件。

仅此而已。

我希望这会有所帮助

相关问题