How to get foreman to run Ruby on Rails Application

I want to deploy my Ruby on Rails app. We use foreman: foreman start -f Procfile. My Procfile looks like this:

web: bundle exec puma -C config/puma.rb
backgroundOnDemand: bundle exec sidekiq -c 1 -q default -q turn_time_worker_queue -q email_sender_worker_queue -q property_inspector_worker_queue -q smart_assignment_worker_queue
backgroundScheduled: bundle exec sidekiq -c 1 -q cleanup_worker_queue -q report_worker_queue

I do have gem install foreman && which foreman as my pre deploy command in the settings. Foreman does get installed and its location is /opt/render/project/.gems/bin/foreman.

My start command is: /opt/render/project/.gems/bin/foreman start -f Procfile

But Render is unable to start my app, I get the following error:

==> Running ‘/opt/render/project/.gems/bin/foreman start -f Procfile’
bash: /opt/render/project/.gems/bin/foreman: No such file or directory

Originally my start command was foreman start -f Procfile which gave the same error.

How can we get foreman to work?


File changes made in pre-deploy won’t persist in the running instance. However, I’d suggest not using foreman for a production deploy.

Best practice would be to use a Web Service for Rails and Background Worker(s) for Sidekiq.