Rails应用程序不再启动,但提供有关" rails new"

时间:2014-11-29 10:27:10

标签: ruby-on-rails server

从一个时刻到另一个时刻,我的rails应用程序不再启动了。在做rails c时,我收到了消息:

C:\Users\mliebelt\IdeaProjects\dhm>bundle exec rails c
DL is deprecated, please use Fiddle
Usage:
  rails new APP_PATH [options]

Options:
  -r, [--ruby=PATH]                                      # Path to the Ruby binary of your choice
...
像我没有任何参数调用rails一样。当我创建一个新的应用程序并进入该目录时,我可以像往常一样启动rails服务器。我尝试了所有的变化:

  • rails c
  • rails s
  • 捆绑exec rails c
  • ...

版本是:

  • Rails:4.1.7
  • Ruby:2.1.4

这个应用程序过去一直在运行,所以今天早上我在Windows和Linux下进行并行开发的问题必定是原因。

我无法在Windows下使用bin/rails s,而且在Vagrant Linux映像中也是如此。我当然在应用程序的目录中,我的应用程序名为dhm。整个结构都存在,我可以像往常一样使用所有rake命令,但不能使用rails命令。所以我怀疑rails命令正在寻找不存在的东西......

我之间的做法如下:

  • 我在Windows本地有一个git存储库,在我的Vagrant Linux映像中有一个。它们由裸存储库同步。
  • 我在两个环境之间切换,并在这里或那里修复了一些东西。
  • 我遇到Git问题,合并失败,所以我手工修复了。

应用程序的bin目录有变化,但我不在Windows下使用它(因为它在那里不起作用)。我没有任何线索如何找到原因,为什么Rails应用程序不再启动。是否有一些标记,--debug--verbose我可以用来获取更多信息?

1 个答案:

答案 0 :(得分:0)

我找到了原因(希望如此),为什么我的应用程序不再起作用了。我做了以下事情:

  1. 将目录app,db,config和文件Gemfile的内容复制到新创建的应用程序中。
  2. 然后我可以将该应用程序作为旧应用程序启动。
  3. 然后我将新创建的应用程序bin文件夹的内容复制回旧应用程序。
  4. 我现在可以使用rails s再次启动应用程序。
  5. 两个文件的差异是:

    git diff bin/rails

    diff --git a/bin/rails b/bin/rails
    index 215a2ea..b9f8787 100755
    --- a/bin/rails
    +++ b/bin/rails
    @@ -1,7 +1,4 @@
    -#!/usr/bin/env ruby
    -begin
    -  load File.expand_path("../spring", __FILE__)
    -rescue LoadError
    -end
    -require 'bundler/setup'
    -load Gem.bin_path('rails', 'rails')
    +#!/usr/bin/env ruby.exe
    +APP_PATH = File.expand_path('../../config/application',  __FILE__)
    +require_relative '../config/boot'
    +require 'rails/commands'
    warning: LF will be replaced by CRLF in bin/rails.
    The file will have its original line endings in your working directory.
    

    也许是某处的复制粘贴错误(spring vs. rails)......

    因此,与Windows OS和Linux OS并行处理同一个应用程序似乎不是一个好主意,至少bin命令是不同的。我会尝试写一篇关于那篇的博客文章......