web-dev-qa-db-ja.com

「Rails」がアプリディレクトリから機能しないのはなぜですか?

アプリフォルダにいますが、コマンド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
18
jmcrist

Railsディレクトリにいないようです(出力はRailsはRails newを使用することです)を使用する唯一の有効な方法を示しています)。

バージョンに応じて、Railsはこれを異なる方法で識別します。3.2では、script/Railsでファイルをチェックします。4.0がリリースされたので、script/Railsのいずれかを探します。またはbin/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 -vthis 投稿で方法がわかります古いバージョンを使用して新しいアプリを作成します)。

27
Joshua Cheek

考えられる理由:

  • 完全なRails appを含むディレクトリにいません
  • binディレクトリが空になる可能性があります。rake Rails:update:bin(Rails 4)またはRails app:update:bin(Rails 5)の場合)を実行してみてください
20
0x4a6f4672

上記のすべての答えは私を助けませんでした。 Rails 4の問題を解決したのは、アプリケーションのルートディレクトリでコマンドを実行することでした。

rake Rails:update:bin

その後、Rails sの実行は期待どおりに実行されていました。

8
Aleks

宝石をまだバンドルしていない可能性があります。

# from command line
bundle install
1
zeantsoi

たとえば、rvmまたはrbenvを使用して複数の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

これが同じ状況で他の人々に役立つことを願っています!

1
fagiani

最初にロケーションパスを確認してから、

bundle install

それでも機能しない場合は、

/bin/bash --login
bundle install
0
Ajay

私はこの問題を抱えていました。アクティブなRubyバージョンをchrubyに変更するのを忘れていたことに気付くのに数分かかりました。異なるRubyは、異なるRailsバージョンを意味し、別のフォルダーで関連ファイルを検索しました。

0
GFonte