2017-09-20 2 views
0

Ich war für einige Zeit auf Rails Entwicklung von Ruby weg, mehrere System-Updates durchlaufen. Dies geschah unter Mac OS X Sierra mit seiner Systemversion von Ruby (2.0.0p648) und Rails 4.0.2.Erstellen neue Ruby on Rails-Anwendung in bestehenden Verzeichnis

Erstellen einer neuen App (rails new appname) funktioniert gut, wenn das Verzeichnis appname nicht existiert --- der Befehl erstellt die App und füllt sie so aus, wie sie sollte. Trotz allem, was alle Reiseführer und Tutorials sagen, schlägt es fehl, wenn ein solches Verzeichnis existiert (auch wenn es leer ist). Sie können auch nicht ein leeres Verzeichnis, cd hinein, schaffen und rails new .

Der Ausgang des ausgefallenen Befehl sieht wie folgt aus:

existieren
/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 'von /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 'von /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 jeder 'von /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' von /Library/Ruby/Gems/2.0. 0/Edelstein/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‘von /Library/Ruby/Gems/2.0.0/gems/railties-4.0.2/lib/rails/ Befehle/application.rb: 43: in <top (required)>' from /Library/Ruby/Site/2.0.0/rubygems/core_ext/kernel_require.rb:68:in erfordern 'von /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 ' von /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 'von /Library/Ruby/Gems/2.0.0/gems/railties-4.0.2/bin/rails : 9: in <top (required)>' from /usr/bin/rails:22:in load 'von /usr/bin/Schienen: 22: in `'

Wie erhalte ich Schienen der Lage sein, die App in einem vorhandenen Verzeichnis zu erstellen?

Antwort

1

Nach vergeblichen Online-Suchen nach dem gleichen Problem, ging ich direkt zu der gemeldeten Quelle: Zeile 97 von /Library/Ruby/Gems/2.0.0/gems/railties-4.0.2/lib/rails/generators/app_base .rb. Diese Zeile sieht wie folgt aus:

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

Nach der Fehlermeldung, es nicht FileUtils finden können, es als eine nicht initialisierte Konstante zu behandeln. Diese Zeile ist auch die einzige Stelle in der Datei app_base.rb, die FileUtils verwendet.

Ich ging an den Anfang der Datei und fügte require 'fileutils' zu seinen Anforderungen hinzu. Ich habe es gespeichert (dies erforderte das Admin-Passwort), und rails new . hat perfekt funktioniert.

Während dies das unmittelbare Problem behebt, habe ich noch Fragen. War das immer da, und ich habe es nicht bemerkt, oder erschien es nach einem Upgrade, wie ich vermutet habe (höchstwahrscheinlich von Ruby 1.8 oder 1.9 zu Ruby 2.0). Was hat sich geändert, um es zu verursachen?

Verwandte Themen