19

我在我的应用程序文件夹中,但该命令rails s不起作用。我阅读了很多关于 Stack Overflow 的帖子,其中大多数似乎来自不在其应用目录中的用户。

此外,我还构建了一些其他应用程序。我检查了这些,Rails 服务器适用于所有这些应用程序。这是唯一一个我无法启动它的地方。

输出which rails

/Users/jmcrist/.rvm/gems/ruby-2.0.0-p247/bin/rails

输出rails s

MacBook-Pro:first_app jmcrist$ rails s
Usage:
  rails new APP_PATH [options]

Options:
  -r, [--ruby=PATH]              # Path to the Ruby binary of your choice
                                 # Default: /Users/jmcrist/.rvm/rubies/ruby-2.0.0-p247/bin/ruby
  -b, [--builder=BUILDER]        # Path to a application builder (can be a filesystem path or URL)
  -m, [--template=TEMPLATE]      # Path to an application template (can be a filesystem path or URL)
      [--skip-gemfile]           # Don't create a Gemfile
      [--skip-bundle]            # Don't run bundle install
  -G, [--skip-git]               # Skip Git ignores and keeps
  -O, [--skip-active-record]     # Skip Active Record files
  -S, [--skip-sprockets]         # Skip Sprockets files
  -d, [--database=DATABASE]      # Preconfigure for selected database (options: mysql/oracle/postgresql/sqlite3/frontbase/ibm_db/sqlserver/jdbcmysql/jdbcsqlite3/jdbcpostgresql/jdbc)
                                 # Default: sqlite3
  -j, [--javascript=JAVASCRIPT]  # Preconfigure for selected JavaScript library
                                 # Default: jquery
  -J, [--skip-javascript]        # Skip JavaScript files
      [--dev]                    # Setup the application with Gemfile pointing to your Rails checkout
      [--edge]                   # Setup the application with Gemfile pointing to Rails repository
  -T, [--skip-test-unit]         # Skip Test::Unit files
      [--old-style-hash]         # Force using old style hash (:foo => 'bar') on Ruby >= 1.9

Runtime options:
  -f, [--force]    # Overwrite files that already exist
  -p, [--pretend]  # Run but do not make any changes
  -q, [--quiet]    # Suppress status output
  -s, [--skip]     # Skip files that already exist

Rails options:
  -h, [--help]     # Show this help message and quit
  -v, [--version]  # Show Rails version number and quit

Description:
    The 'rails new' command creates a new Rails application with a default
    directory structure and configuration at the path you specify.

    You can specify extra command-line arguments to be used every time
    'rails new' runs in the .railsrc configuration file in your home directory.

    Note that the arguments specified in the .railsrc file don't affect the
    defaults values shown above in this help message.

Example:
    rails new ~/Code/Ruby/weblog

    This generates a skeletal Rails installation in ~/Code/Ruby/weblog.
    See the README in the newly created application to get going.

我正在阅读 Hartl 的 Rails 教程,他对 gemfile 做了很多修改。我想知道这是否可能是原因?

source 'https://rubygems.org'

gem 'rails', '3.2.13'

group :development do
  gem 'sqlite3', '1.3.5'
end


# Gems used only for assets and not required
# in production environments by default.
group :assets do
  gem 'sass-rails',   '3.2.5'
  gem 'coffee-rails', '3.2.2'

  gem 'uglifier', '1.2.3'
end

gem 'jquery-rails', '2.0.2'

group :production do
  gem 'pg', '0.12.2'
end
4

7 回答 7

28

似乎认为您不在 rails 目录中(您的输出表明使用 rails 的唯一有效方法是 with rails new)。

根据您的版本,Rails 会以不同的方式识别这一点。在 3.2 上,它检查位于script/rails. 现在 4.0 已经发布,它会寻找script/railsbin/railshttps://github.com/rails/rails/blob/207fa5c11ddf1cfd696f0eeb07d6466aae9d451e/railties/lib/rails/app_rails_loader.rb#L6

大概您可以通过在目录中创建文件来解决此rails问题script(如果您没有script目录,请在应用程序的根目录中创建一个):

#!/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 是您首先要使用rails -v的版本(如果版本较新,这篇文章将向您展示如何使用旧版本创建新应用程序)。

于 2013-07-15T05:00:07.813 回答
22

可能的原因:

  • 您不在包含完整 Rails 应用程序的目录中
  • 您的bin目录可能我是空的,尝试运行rake rails:update:bin(对于 Rails 4)或rails app:update:bin(Rails 5)
于 2014-02-07T13:55:36.710 回答
8

以上所有答案都没有帮助我。解决我的问题的Rails 4是在我的应用程序的根目录中运行命令:

rake rails:update:bin

之后rails s运行按预期运行。

于 2014-10-02T08:27:34.217 回答
2

如果您使用rvmrbenv例如保留多个 ruby​​ 版本,则rails该特定ruby版本的默认版本可能与您尝试运行的项目不同,因此它无法检测到您的应用程序。

为了确保您使用的是正确的rails版本,您可以比较两个结果。这就是我所拥有的:

$ rails -v
Rails 3.1.0

$ bundle exec rails -v
Rails 5.0.0.1

在这种情况下,您可以保留默认rails版本,然后使用:

$ bundle exec rails server

或者安装特定rails gem于那个ruby版本的:

$ gem install rails -v 5.0.0.1
$ rails -v
Rails 5.0.0.1

然后使用不那么冗长的命令让它工作:

$ rails s

我希望这对处于相同情况的其他人有所帮助!

于 2017-03-16T15:46:51.210 回答
1

您可能还没有捆绑您的宝石:

# from command line
bundle install
于 2013-07-15T00:14:01.767 回答
0

我遇到了这个问题,花了几分钟才意识到我忘记用 chruby 更改活动的 Ruby 版本。不同的 Ruby 意味着不同的 Rails 版本,它在另一个文件夹中查找相关文件。

于 2016-07-16T04:36:49.377 回答
0

首先检查您的位置路径,然后

bundle install

如果仍然不起作用,请输入

/bin/bash --login
bundle install
于 2016-12-13T12:24:33.550 回答