Rails为所有命令行方法(如generate或rake)提供NameError

我是Rails的初学者,过去几天我一直试图找出世界上出了什么问题,但绝对没有运气。 我到处搜索,但一无所获。 基本上,当我运行任何类型的命令行方法时,我将得到一个NameError。 我尝试在不同的项目目录中运行它以及以前的工作。 铁轨似乎刚刚破裂……

我正在运行Win7-32​​bit,使用NetBeans 6.9.1编辑文件,使用cmd.exe运行rails console。

一切都运作良好大约两个星期,然后这突然发生了。 这里有一些例子:

rails生成模型:

irb(main):004:0> rails generate model datatest NameError: undefined local variable or method `datatest' for main:Object from (irb):4 from C:/Ruby192/lib/ruby/gems/1.9.1/gems/railties-3.0.3/lib/rails/commands/console.rb:44:in `start' from C:/Ruby192/lib/ruby/gems/1.9.1/gems/railties-3.0.3/lib/rails/commands/console.rb:8:in `start' from C:/Ruby192/lib/ruby/gems/1.9.1/gems/railties-3.0.3/lib/rails/commands.rb:23:in `' from script/rails:6:in `require' from script/rails:6:in `' 

rails生成迁移:

 irb(main):003:0> rails generate migration rename_password_to_hashed_password NameError: undefined local variable or method `rename_password_to_hashed_password' for main:Object from (irb):3 from C:/Ruby192/lib/ruby/gems/1.9.1/gems/railties-3.0.3/lib/rails/commands/console.rb:44:in `start' from C:/Ruby192/lib/ruby/gems/1.9.1/gems/railties-3.0.3/lib/rails/commands/console.rb:8:in `start' from C:/Ruby192/lib/ruby/gems/1.9.1/gems/railties-3.0.3/lib/rails/commands.rb:23:in `' from script/rails:6:in `require' from script/rails:6:in `' 

rake db:migrate:

 irb(main):005:0> rake db:migrate NameError: undefined local variable or method `migrate' for main:Object from (irb):5 from C:/Ruby192/lib/ruby/gems/1.9.1/gems/railties-3.0.3/lib/rails/commands/console.rb:44:in `start' from C:/Ruby192/lib/ruby/gems/1.9.1/gems/railties-3.0.3/lib/rails/commands/console.rb:8:in `start' from C:/Ruby192/lib/ruby/gems/1.9.1/gems/railties-3.0.3/lib/rails/commands.rb:23:in `' from script/rails:6:in `require' from script/rails:6:in `' 

任何forms的帮助都将非常感激。 谢谢!

这些命令在irb中不起作用,您必须直接从cmd.exe启动它们。

我会主动详细阐述@dhofset的答案。 基本上我们直接在控制台中使用rails app相关命令,而不是在irb控制台中。 即使我在Windows上工作,所以我举几个例子给你

这是你做的

 1. Create new App C:\Users\rohit>rails new_app 2. Generate a scaffold C:\Users\rohit\new_app>ruby script\generate scaffold User name:string 3. Generate a model C:\Users\rohit\new_app>ruby script\generate model User name:string 4. To run a rake task C:\Users\rohit\new_app>rake db:create C:\Users\rohit\new_app>rake db:migrate 

希望你现在有更好的理解。

是的,dhofstet说得对:这些都是windows提示符的命令,它们不是 ruby语句。