Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Rails 4 doesn't detect application

After updating to Rails 4, I'm trying to start the server, but it won't start. Simply put, the application doesn't seem to get "detected", like there is no application in there.

~ $ 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

What is weird is that the (older) system gem will make it start just fine, but not with Bundler.

Why won't Rails start?

I tried navigating the CLI source code, but I can't grip what's going on.

(Using Edge Rails 4.0.0.beta and Ruby 2.0.0.rc)

In case you're wondering, here's the directory listing:

~ $ ls
app  config db    Gemfile   lib  mock    Rakefile   script  tmp
bin  config.ru  features  Gemfile.lock  log  public  README.md  spec    vendor
like image 914
Jonathan Allard Avatar asked Feb 12 '13 20:02

Jonathan Allard


1 Answers

Mostly, I've been had by my own laziness. (Even though laziness is the mother of efficiency ;o) ) I've made a point of not using Bundle when running Rails server.

Rails 4.0.0.beta changes the way it boots up. But, since I was using my "old" version of Rails, an older 4.0.0-beta I had lying around in my local gems, which didn't have the change, I didn't notice when the change was made to my bundle.

Now, when came the time to deploy, the obligatory bundle-exec couldn't boot because my code was used to boot the old way.

The solution

Do like the message says to: bundle exec rails new .. And use Bundle this time! At that point, Rails will generate the boilerplate stuff, namely the missing boot files like ./bin/rails.

It will also update some config files, and try to overwrite some stuff. In my case, everything is checked into source control, so there's a bit of diff'ing and choosing whether to overwrite or not and reverting after.

An maybe better idea (I haven't bothered to) would be to branch out in Git, run the "upgrade" rails-new, overwrite everything, commit that, and then three-way merge back with the main branch.

like image 152
Jonathan Allard Avatar answered Oct 24 '22 03:10

Jonathan Allard