2013-07-15 17 views
15

私のアプリケーションフォルダにありますが、コマンドrails sは機能しません。私はStack Overflowに関するかなりの記事を読んでおり、そのほとんどは自分のappディレクトリにいないユーザーからのものだと思われます。なぜ "rails s"はアプリディレクトリから動作しないのですか?

さらに、いくつかのアプリを作成しました。私はそれらをチェックし、Railsサーバーはこれらすべてのアプリケーションで動作します。これが私が打つことができない唯一の場所です。 which rails

出力:rails s

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

出力:

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 
+0

rails serverコマンドは動作しますか? EDIT〜あなたの宝石をインストールしたり更新したりしていないので、他の同様の質問を見ているかもしれません。 –

+0

コマンドラインから 'pwd'の出力は何ですか? – zeantsoi

+0

'/ Users/jmcrist/rails_projects/first_app' – jmcrist

答えて

22

を(あなたの出力はレールを使用するための唯一の有効な方法はrails newであると言っている)あなたはレールのディレクトリにないと考えているようです。

バージョンによっては、Railsによってこれが異なって識別されます。 3.2では、script/railsにあるファイルをチェックします。今、4.0がリリースされていること、それは1つを作成し、script/railsまたはbin/railsおそらく(https://github.com/rails/rails/blob/207fa5c11ddf1cfd696f0eeb07d6466aae9d451e/railties/lib/rails/app_rails_loader.rb#L6

あなたがscriptディレクトリを持っていない場合は、(自分のscriptディレクトリ内のファイルrailsを作成することによってこの問題を回避することができますいずれかを探しますあなたのアプリのルート):あなたが最初の場所でこのファイルを持っていない理由はもちろん

#!/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 -v、古いバージョンを使用して新しいアプリケーションを作成する方法はthisポストに表示されます)。

+0

あなたは間違いなくRailsのバージョンを使用していました。 私はMichael Hartlのチュートリアルに従っています。何らかの理由で、何度か出発して戻ってきたときに、誤ってRails 3.2を選択しました。 ご協力いただきありがとうございます。 – jmcrist

+0

ありがとうございました!私が使っていたアプリはRails 4アプリとして始まったが、ダウングレードが終わった。したがって、 'bin/rails'フォルダは欠けていました。私はpowを使用していましたので、コンソールを使用するまで問題は見えませんでした。私がこれを見るまで、私の頭を傷つけて、rvmの宝石類とあらゆる種類のものを再建していた! – Pezholio

+0

ありがとうございます!これで1日が節約されました。 – David

1

あなたはおそらくまだあなたの宝石を同梱していない:

# from command line 
bundle install 
+0

ゼアントソイ:これを行おうとしました。残念ながら、それは問題を解決しませんでした: '...あなたのバンドルは完了です! グループ生産の宝石は設置されていませんでした。 バンドルされた宝石がどこにインストールされているかを確認するには、 'bundle show [gemname]'を使用してください。 MacBook Pro:first_app jmcrist $ rails s 使用法: rails new APP_PATH [options] ... ' – jmcrist

+0

私はOPと同じ問題があります。バンドルはまだパスにありません。 – Kirka121

18

考えられる理由:

  • あなたは完全なレールのアプリが含まれているディレクトリにない
  • あなたbinディレクトリは私が空、またはrails app:update:bin(5レール)(レール4用)rake rails:update:binを実行しようとするかもしれません
+0

私はbinディレクトリを 'spring binstub -all'と混乱させました。これは私のために復元しました。 –

+0

binの中のディレクトリを落としてしまったので、gitに入れてください。 – juliangonzalez

+0

私のために働きました。ありがとう! –

7

上記の回答はすべて私を助けませんでした。

rake rails:update:bin 

それは予想通りrails sが実行されていた実行した後:何Rails 4のための私の問題を解決することは自分のアプリケーションのルートディレクトリにあるコマンドを実行することでした。

0

私はこの問題を抱えていましたが、私はchrubyでアクティブなRubyバージョンを変更するのを忘れてしまったことに気がつきました。異なるRubyは別のRailsバージョンを暗示しました。別のRailsバージョンでは、別のフォルダ内の関連ファイルを探しました。

0

まず、あなたの場所のパスでチェックしてから

bundle install 

それでも動作しない場合は、複数のRubyバージョンを維持するためにrvmまたはインスタンスのrbenvを使用する場合は、

/bin/bash --login 
bundle install 
0

を入力し、多分あなたのデフォルト特定のrubyバージョンのrailsバージョンは、実行しようとしているプロジェクトと異なるため、アプリケーションを検出できません。

正しいrailsバージョンを使用していることを確認するには、両方の結果を比較することができます。

$ rails -v 
Rails 3.1.0 

この場合は、デフォルトrailsバージョンを保持してから使用することができます

$ bundle exec rails -v 
Rails 5.0.0.1 
に:

$ bundle exec rails server 

または特定rails gemをインストールこれは私が持っているものですその非常にrubyバージョン:

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

そしてそれはあまりverboseコマンドで作業します:

$ rails s 

私は、これは、同じ状況で他の人々の助けになると願っています!