Question

I've followed the guide on Heroku's website to get a node server running using foreman:

http://devcenter.heroku.com/articles/node-js

I can successfully start up the node server if I load it directly, but as soon as I use Foreman in the Procfile, it errors with the following...

My-MacBook-Air:myDirectory digiguru$ foreman start
13:25:26 web.1     | started with pid 29046
13:25:26 web.1     | /usr/local/foreman/lib/foreman/process.rb:38:in `exec': Permission denied - /usr/local/foreman/bin/runner (Errno::EACCES)
13:25:26 web.1     |    from /usr/local/foreman/lib/foreman/process.rb:38:in `fork_with_io'
13:25:26 web.1     |    from /usr/local/foreman/lib/foreman/process.rb:32:in `fork'
13:25:26 web.1     |    from /usr/local/foreman/lib/foreman/process.rb:32:in `fork_with_io'
13:25:26 web.1     |    from /usr/local/foreman/lib/foreman/process.rb:44:in `run_process'
13:25:26 web.1     |    from /usr/local/foreman/lib/foreman/process.rb:19:in `run'
13:25:26 web.1     |    from /usr/local/foreman/lib/foreman/process.rb:64:in `with_environment'
13:25:26 web.1     |    from /usr/local/foreman/lib/foreman/process.rb:18:in `run'
13:25:26 web.1     |    from /usr/local/foreman/lib/foreman/process.rb:17:in `chdir'
13:25:26 web.1     |    from /usr/local/foreman/lib/foreman/process.rb:17:in `run'
13:25:26 web.1     |    from /usr/local/foreman/lib/foreman/procfile_entry.rb:17:in `spawn'
13:25:26 web.1     |    from /usr/local/foreman/lib/foreman/procfile_entry.rb:15:in `map'
13:25:26 web.1     |    from /usr/local/foreman/lib/foreman/procfile_entry.rb:15:in `spawn'
13:25:26 web.1     |    from /usr/local/foreman/lib/foreman/engine.rb:63:in `spawn_processes'
13:25:26 web.1     |    from /usr/local/foreman/lib/foreman/engine.rb:61:in `each'
13:25:26 web.1     |    from /usr/local/foreman/lib/foreman/engine.rb:61:in `spawn_processes'
13:25:26 web.1     |    from /usr/local/foreman/lib/foreman/engine.rb:45:in `start'
13:25:26 web.1     |    from /usr/local/foreman/lib/foreman/cli.rb:28:in `start'
13:25:26 web.1     |    from /usr/local/foreman/vendor/gems/thor-0.14.6/lib/thor/task.rb:22:in `send'
13:25:26 web.1     |    from /usr/local/foreman/vendor/gems/thor-0.14.6/lib/thor/task.rb:22:in `run'
13:25:26 web.1     |    from /usr/local/foreman/vendor/gems/thor-0.14.6/lib/thor/invocation.rb:118:in `invoke_task'
13:25:26 web.1     |    from /usr/local/foreman/vendor/gems/thor-0.14.6/lib/thor.rb:263:in `dispatch'
13:25:26 web.1     |    from /usr/local/foreman/vendor/gems/thor-0.14.6/lib/thor/base.rb:389:in `start'
13:25:26 web.1     |    from /usr/bin/foreman:15
13:25:26 web.1     | process terminated
13:25:26 system    | sending SIGTERM to all processes

Is there anything I can do to give Forman permission? I've tried sudo foreman start, but to no avail.

I am running in ruby version 1.9.3 (upgraded from version 1.8.7 installed on lion by default).

UPDATE

Running sudo foreman start after @user658619 installing heruko and foreman from ruby gems, we get...

/Users/digiguru/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/site_ruby/1.9.1/rubygems/dependency.rb:247:in `to_specs': Could not find foreman (>= 0) amongst [bigdecimal-1.1.0, io-console-0.3, json-1.5.4, minitest-2.5.1, rake-0.9.2.2, rdoc-3.9.4] (Gem::LoadError)
    from /Users/digiguru/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/site_ruby/1.9.1/rubygems/dependency.rb:256:in `to_spec'
    from /Users/digiguru/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/site_ruby/1.9.1/rubygems.rb:1208:in `gem'
    from /Users/digiguru/.rvm/gems/ruby-1.9.3-p0/bin/foreman:18:in `<main>'

My environment...

RubyGems Environment:
  - RUBYGEMS VERSION: 1.8.15
  - RUBY VERSION: 1.9.3 (2011-10-30 patchlevel 0) [x86_64-darwin11.2.0]
  - INSTALLATION DIRECTORY: /Users/digiguru/.rvm/gems/ruby-1.9.3-p0
  - RUBY EXECUTABLE: /Users/digiguru/.rvm/rubies/ruby-1.9.3-p0/bin/ruby
  - EXECUTABLE DIRECTORY: /Users/digiguru/.rvm/gems/ruby-1.9.3-p0/bin
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86_64-darwin-11
  - GEM PATHS:
     - /Users/digiguru/.rvm/gems/ruby-1.9.3-p0
     - /Users/digiguru/.rvm/gems/ruby-1.9.3-p0@global
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :benchmark => false
     - :backtrace => false
     - :bulk_threshold => 1000
  - REMOTE SOURCES:
     - http://rubygems.org/
Was it helpful?

Solution 2

Basically to get it working I had unfortunatley mucked up my installations by having a mix of rubies and gems some of which required SUDO, some that didn't.

Fortunately the good people of the internet have solved this problem for you with a tool called RVM

RVM lets you deploy each project with its own completely self-contained and dedicated environment--from the specific version of ruby, all the way down to the precise set of required gems to run your application. Having a precise set of gems also avoids the issue of version conflicts between projects, which can cause difficult-to-trace errors and hours of hair loss.

http://beginrescueend.com/

First download RVM

$ bash -s stable < <(curl -s https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer)

You'll want to open a new terminal window after doing this.

Clean up. If you have weirdly installed gems you'll want to remove them. Go to your root directory and sudo get rid of them. You can see all of them with the gem list command

cd 
sudo gem list
sudo gem uninstall foreman heroku

Install a ruby. You should do this in the subdirectory of your application. I chose 1.9.3

cd myApp
rvm install 1.9.3

Add any gems you need. For me that was just foreman and heroku.

cd myApp
gem install foreman heroku

Seemed to work a treat.

OTHER TIPS

I got the same problem today. Did you install heroku thru heroku-toolbelt.pkg??

Try use gem to reinstall heroku and foreman.

sudo gem install heroku foreman

Try this. In Procfile, do

web: node ./bin/www
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top