fnllc
By:
fnllc

Unable to start unicorn as a service

October 29, 2014 9.8k views

I used the 1-Click Ruby on Rails on Ubuntu 14.04 Image and this guide to setup my rails app: https://www.digitalocean.com/community/tutorials/how-to-use-the-1-click-ruby-on-rails-on-ubuntu-14-04-image .

However, I downgraded to ruby 1.9.3 using rvm. I also removed the other ruby versions as they appeared to give me some issues.

I'm able to to manually start unicorn using the following command in my rails app root directory:

bundle exec unicorn -D -E "production"

However, when I try to start the unicorn service I receive this error:

service unicorn start

 * Starting Unicorn web server unicorn           
    /usr/bin/env: ruby_executable_hooks: No such file or directory

I'm logged in as root.

I would like to be able to get the service to work so that unicorn starts on reboot.

Thanks.

2 Answers

Since you downgraded your version of Ruby, you'll need to update the Unicorn configuration as well. Edit the file /etc/default/unicorn and change the values for the environmental variables to match the path found by running which ruby:

PATH=/usr/local/rvm/rubies/ruby-2.1.3/bin:/usr/local/rvm/rubies/ruby-2.0.0-p353/bin:/usr/local/rvm/gems/ruby-2.0.0-p353/bin:/home/unicorn/.rvm$
export GEM_HOME=/usr/local/rvm/gems/ruby-2.1.3
export GEM_PATH=/usr/local/rvm/gems/ruby-2.1.3:/usr/local/rvm/gems/ruby-2.1.3
DAEMON=/usr/local/rvm/gems/ruby-2.1.3/bin/unicorn
  • I already edited my /etc/default/unicorn . My which ruby is:

    /usr/local/rvm/rubies/ruby-1.9.3-p547/bin/ruby

    My /etc/default/unicorn is below. Do I need to add "ruby" at the end of my paths?

    PATH=/usr/local/rvm/rubies/ruby-1.9.3-p547/bin:/home/unicorn/.rvm/bin:/usr/local/sbin:/usr/bin:/bin:/sbin:$
    export GEMHOME=/usr/local/rvm/gems/ruby-1.9.3-p547
    export GEM
    PATH=/usr/local/rvm/gems/ruby-1.9.3-p547:/usr/local/rvm/gems/ruby-1.9.3-p547
    DAEMON=/usr/local/rvm/gems/ruby-1.9.3-p547/bin/unicorn

In case it helps, we had the same issue after downgrading Ruby (and changing /etc/default/unicorn appropriately). Never figured out why this was a problem, but editing the first line of the unicorn executable to include the full path to rubyexecutablehooks fixed it.

In our case, change the first line of /usr/local/rvm/gems/ruby-2.1.0/bin/unicorn from this:

!/usr/bin/env rubyexecutablehooks

to this:

!/usr/bin/env /usr/local/rvm/gems/ruby-2.1.0/bin/rubyexecutablehooks
  • Thank you! This did the trick for me. I don't know how long it would have taken me to figure this out. This Ruby version unwinding is a real pain.

Have another answer? Share your knowledge.