Rails console not working on server

16,834

Solution 1

I'm assuming that you updated to rails 4 from version 3 and your app can't find the executables in the bin directory. Run this to see your rails version:

$ rails -v

If your rails version is 4 or above, try running this:

$ rake rails:update:bin

Source: Rails 4 Release Notes

6.1 Notable changes

  • Your app's executables now live in the bin/ dir. Run rake rails:update:bin to get bin/bundle, bin/rails, and bin/rake.

Solution 2

I am using capistrano to deploy, including the capistrano/bundler gem. Since the ./bin directory is version controlled in Rails 4, we need to prevent Capistrano from linking it on deployments by removing bin from set :linked_dirs.

Now in order to prevent bundler from overwriting the version controlled binstubs, we can add the line set :bundle_binstubs, nil which will prevent capistrano-bundler from setting the --binstubs option when running bundle install.

My config/deploy.rb file now has these lines:

# Default value for linked_dirs is []
set :linked_dirs, fetch(:linked_dirs, []).push('log', 'tmp/pids', 'tmp/cache', 'tmp/sockets', 'vendor/bundle', 'public/system')

set :bundle_binstubs, nil

Note the lack of the bin directory in the :linked_dirs line.

Solution 3

I have the same problem, and turns out when you deploy through cap shared/bin is symlink to current/bin.

Here's what works for me:

  • rm current/bin
  • mkdir current/bin
  • rake rails:update:bin

This should help, but it is somewhat a temporary solution, I'm trying to find out how to make cap not auto symlink-ing current/bin.

Solution 4

In case of Rails 5.2

I had to remove bin directory by running below command in project root directory.

 rm -rf bin

and then I ran another command in project root directory:

 rake app:update:bin

It will show you output like below:

  create  bin
  create  bin/bundle
  create  bin/rails
  create  bin/rake
  create  bin/setup
  create  bin/update
  create  bin/yarn

That's it.

Share:
16,834

Related videos on Youtube

user2609980
Author by

user2609980

Updated on January 31, 2022

Comments

  • user2609980
    user2609980 over 2 years

    When I run bundle exec rails console production or rails console production via SSH on the server in the Current folder of the Capistrano deploy I get:

    Usage:
         rails new APP_PATH [options]
    
    Options:
        (...)
    

    with an explanation to start a new app. Locally it works. Why can't I start a console remotely?

    • Eugene
      Eugene over 9 years
      Does this work? RAILS_ENV=production bundle exec rails console
    • user2609980
      user2609980 over 9 years
      @Eugene I get the same message as above. No idea why, rails and ruby are installed.
    • Rustam A. Gasanov
      Rustam A. Gasanov over 9 years
      Did you load your environment? rvm gemset or rbenv or else
    • user2609980
      user2609980 over 9 years
      I started the (thin) server which is running. How can I load the environment? rvm gemset gives Unknown subcommand ' '.
  • user2609980
    user2609980 over 9 years
    I did not update Rails. It is a clean install. I will try to run the command anyway.
  • Seb Wilgosz
    Seb Wilgosz over 9 years
    This helped for me. Thanks a lot.
  • RidingTheRails
    RidingTheRails about 9 years
    "bundle exec rake rails:update:bin" worked for me and then "bundle exec rails c"
  • Lamar
    Lamar almost 8 years
    I tried this solution but got the follwoing error: "No Rakefile found (looking for: rakefile, Rakefile, rakefile.rb, Rakefile.rb)". I am new to ruby and rake. Any idea what's going on?
  • johnrbnz
    johnrbnz over 2 years
    I had to slightly alter the command to bundle exec rake app:update:bin.
  • johnrbnz
    johnrbnz over 2 years
    Yes, had success with bundle exec rake app:update:bin.