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

奇怪的是(旧的)系统 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/railsbin/rake
于 2013-02-19T09:38:36.137 回答
1

大多数情况下,我一直被自己的懒惰所占据。(尽管懒惰是效率之母;o))我已经指出在运行Rails 服务器时不要使用 Bundle 。

Rails 4.0.0.beta改变了它的启动方式。但是,由于我使用的是“旧”版本的 Rails,一个旧的 4.0.0-beta 我躺在我的本地 gems 中,它没有改变,我没有注意到什么时候对我的捆。

现在,到了部署的时候,强制bundle-exec无法启动,因为我的代码用于启动旧方式。

解决方案

像消息所说的那样做:bundle exec rails new .。这次使用Bundle!此时,Rails 将生成样板文件,即缺少的引导文件,如./bin/rails.

它还会更新一些配置文件,并尝试覆盖一些东西。就我而言,所有内容都已检查到源代码管理中,因此有一些差异并选择是否覆盖并在之后恢复。

一个可能更好的想法(我没有费心)是在 Git 中分支,运行“升级” rails-new,覆盖所有内容,提交,然后与主分支进行三向合并。

于 2013-02-12T22:31:10.543 回答
0

如果您的 bin 文件夹已经存在,您可能只需bundle install要先运行。在克隆了在另一台机器上完美运行的存储库后,这解决了我的问题。

于 2016-09-25T03:54:40.000 回答