输入'rails console'没有启动?

38
我打出了这个:
>rails console

我得到了这个:
Usage:
  rails new APP_PATH [options]

Options:
      [--skip-gemfile]        # Don't create a Gemfile
  -d, [--database=DATABASE]   # Preconfigure for selected database (options: mysql/oracle/postgresql/sqlite3/frontbase/ibm_db)
                              # Default: sqlite3
..
..
.

我正在跟随 Rails 教程学习,但遇到了困难。
我已经安装了 Rails 3.0。

你修改过你的bashrc(或bash_profile)文件吗?我曾经在修改我的文件以在命令提示符中显示当前目录后遇到了同样的问题。 - stephenmurdoch
10个回答

41

如果还有其他人遇到这个问题,我的症状是:

我使用了Capistrano 3 部署了我的应用程序

我进入了我的应用程序目录,但rails console无法正常工作

后来发现我在cap deploy中的符号链接目录中包含了bin文件夹,如下所示:

set :linked_dirs, %w{log tmp/pids tmp/cache tmp/sockets vendor/bundle public/system}

... 而我的 'shared' 中的 bin 目录是空的。

两种解决方法:

  • 确保你的链接bin目录具有正确的内容(查看你的#{RAILS_ROOT}/bin目录里面是什么),或者
  • 不要链接bin

然后我重新部署,它就可以正常工作了。


你刚刚为我节省了许多沮丧的时间。这正是我需要的! - user2490003
1
非常感谢!指示清晰且有效。对我来说非常困惑,因为bin实际上是空的,我一直在想“为什么这会改变任何东西?”--但它确实改变了。谢谢! - dimitarvp
2
缺失的binstubs可以使用bundle exec rake app:update:bin(或针对特定gem的bundle binstubs <gem>)重新生成。 - Steve

39

当您输入$ rails console时,您是否在应用程序的根路径下?

提示:$rails c$ rails console的快捷方式。


我并没有,但是当我在时它可以正常工作,为什么呢? rails -v 在应用程序根路径之外也可以运行。 - Blankman
4
Rails 是一个可以在整个系统中使用的程序。你可以使用 rails new <projectname> 来设置你的环境。如果想要使用特定于应用程序的 Rails 命令(例如运行控制台),则必须告诉它在哪里工作,即在项目根目录内运行。 - eli
同时确保你正在使用项目所使用的相同版本的Ruby。 - bradleygriffith

10

我在将Rails 2应用程序升级到Rails 3时遇到了同样的问题。当在应用程序的根目录中运行rails console(或实际上是rails [anything])时,我会看到一般的rails new使用输出(如Blankman在原始问题中引用的)。

问题在于我没有从script目录中删除旧的Rails 2脚本。删除script目录中的所有内容并添加在每个新的Rails 3应用程序中自动生成的script/rails文件后,rails命令现在能够按预期工作。

为了获取script/rails文件的最新内容,请生成一个新的应用程序并将该文件复制到您要升级的Rails 2应用程序中。截至Rails 3.0.7,此文件中包含以下内容:

#!/usr/bin/env ruby
# This command will automatically be run when you run "rails" with Rails 3 gems installed from the root of your application.

APP_PATH = File.expand_path('../../config/application',  __FILE__)
require File.expand_path('../../config/boot',  __FILE__)
require 'rails/commands'

谢谢,我遇到了这个问题,复制一个脚本/ Rails 文件解决了它。 - Mario

7

我在将Rails 2升级到3时遇到了这个问题,通过执行Nick所说的步骤并运行bundle exec rails console production,我成功地解决了它。


3
在Rails 2.3.x中,命令是在给定的Rails应用程序目录中键入script/console,以启动带有默认Rails环境的Ruby控制台。不确定Rails 3.0是否相同。

2
您需要进入项目目录并运行命令rails console。 例如:
D:\workspace\>rails blog
D:\workspace\>cd blog
D:\workspace\blog\> rails c
loading en...

1

你现在在 Rails 3 应用程序目录下吗?

你是否安装了多个版本的 Rails?

尝试检查 'which rails' 命令,并确保你正在运行 Rails 3 可执行文件,因为这个使用看起来像是 Rails 2.x。


哪个Rails? => /usr/bin/rails - Blankman

1

你正在运行正确的命令(rails console),但很可能不在此应用程序的工作目录中。将目录更改为Rails应用程序的根目录(其中您将找到/scripts/app等),然后该命令应按预期工作。

注意:使用script/consoleruby script/console适用于早期版本的Rails。


0
在我的情况下,bin/rails c 是在我的应用程序根目录下工作的。

0

你需要两个宝石 "rdoc" 和 "rb-readline"。 然后在Gemfile中添加这些宝石,并执行 bundle install。 控制台正常工作。

适用于Arch Linux或Manjaro。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接