15

Rails 4にアップデート後、サーバーを起動しようとしていますが、起動しません。簡単に言えば、そこにアプリケーションがないように、アプリケーションは「検出」されないようです。

~ $ bundle exec rails server
Usage:
  rails new APP_PATH [options]

Options:
  -r, [--ruby=PATH]              # Path to the Ruby binary of your choice
                                 # Default: /app/vendor/ruby-2.0.0/bin/ruby
  -b, [--builder=BUILDER]        # Path to some application builder (...
  -m, [--template=TEMPLATE]      # Path to some application template (...
      [--skip-gemfile]           # Don't create a Gemfile
  -B, [--skip-bundle]            # Don't run bundle install

奇妙なのは、(古い) system gem を使用すると問題なく起動するが、Bundler では起動しないことです。

Rails が起動しないのはなぜですか?

CLI ソース コードをナビゲートしようとしましたが、何が起こっているのか把握できません。

(Edge Rails 4.0.0.beta と Ruby 2.0.0.rc を使用)

ご参考までに、ディレクトリのリストを次に示します。

~ $ ls
app  config db    Gemfile   lib  mock    Rakefile   script  tmp
bin  config.ru  features  Gemfile.lock  log  public  README.md  spec    vendor
4

3 に答える 3

35

Rails 4 では、起動方法が変更されました。

幸いなことに、実行する必要はありませんrails-new。そのための便利なタスクがあるからです。

Rails 4 リリースノート:

6.1 主な変更点

  • アプリの実行可能ファイルはディレクトリに存在するようになりましたbin/。を実行rake rails:update:binしてbin/bundlebin/rails、およびを取得しbin/rakeます。
于 2013-02-19T09:38:36.137 に答える
1

ほとんどの場合、私は自分の怠惰に悩まされてきました。(怠惰は効率の母ですが; o))私はRailsサーバーを実行するときにバンドルを使用しないことを強調しました。

Rails 4.0.0.betaは、起動方法を変更します。しかし、私は「古い」バージョンのRailsを使用していたので、変更がなかったローカルの宝石に横たわっていた古い4.0.0ベータ版を使用していたので、変更がいつ行われたかはわかりませんでした。バンドル。

さて、デプロイするときが来たとき、bundle-exec私のコードが古い方法で起動するために使用されたため、必須は起動できませんでした。

ソリューション

メッセージが言うようにしてください:bundle exec rails new .。そして今回はバンドルを使用してください!その時点で、Railsは定型文、つまりのような欠落しているブートファイルを生成します./bin/rails

また、いくつかの構成ファイルを更新し、いくつかのものを上書きしようとします。私の場合、すべてがソース管理にチェックインされているので、少し違いがあり、上書きするかどうかを選択して、後で元に戻します。

おそらくより良いアイデア(私は気にしませんでした)は、Gitでブランチし、「アップグレード」を実行し、rails-newすべてを上書きし、それをコミットしてから、メインブランチと3方向にマージすることです。

于 2013-02-12T22:31:10.543 に答える