ruby-on-rails - rails : Creating new Ruby on Rails app in existing directory

标签 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 .失败命令的输出如下所示:

exist
/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 each' from /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' from /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 start' from /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 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/lib/rails/cli.rb:15:in <top (required)>' from /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 require' from /Library/Ruby/Gems/2.0.0/gems/railties-4.0.2/bin/rails:9:in <top (required)>' from /usr/bin/rails:22:in load' from /usr/bin/rails:22:in `'


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

最佳答案

在网上搜索同样的问题无果后,我直接去了报告的来源:/Library/Ruby/Gems/2.0.0/gems/railties-4.0.2/lib/rails/generators/app_base.rb的第97行。该行看起来像这样:
FileUtils.cd(destination_root) unless options[:pretend]
根据报错信息,找不到FileUtils ,将其视为未初始化的常量。这一行也是 app_base.rb 文件中唯一使用 FileUtils 的地方.

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

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

关于ruby-on-rails - rails : Creating new Ruby on Rails app in existing directory,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46330264/

相关文章:

ruby-on-rails - 发布请求不处理上传

ruby-on-rails - Ruby on Rails 复选框不保存数据

ruby-on-rails - 启动 webpack-dev-server 时配置对象无效

ruby-on-rails - 在 ruby​​ 中获取 oauth2 access_token 所有者电子邮件地址?

arrays - 将数组值映射到具有递增键名的散列

macos - mac Swift 多个 keyDown 事件

java - 禁止某人使用我的 java 程序的有效方法?

macos - NSWindow 关闭后 activateIgnoringOtherApps 和 makeKeyAndOrderFront 不起作用

ruby-on-rails - Rails 4.2,回形针 gem 。无法附加 .docx 类型,尽管已注册 MIME 类型,但读取 content_type 为 'application/zip'

ruby - 在 Ruby 中比较数组并删除重复项?