How do I fix this error when deploying rails with capistrano, using nginx and puma?

September 9, 2015 2.4k views
Deployment Ruby on Rails Nginx DigitalOcean Applications Ruby Ubuntu

Hello,

I'm attempting to deploy my rails app from a bitbucket repo using the following tutorial: https://www.digitalocean.com/community/tutorials/deploying-a-rails-app-on-ubuntu-14-04-with-capistrano-nginx-and-puma

I have done everything in the tutorial, but when I get to deployment using "cap production deploy:initial", I receive an error message. The deploy:install first pulls down the repo and sets up the capistrano stuff, but when it gets to bundling my gems, I get the following error:

DEBUG [1a250078] [31mAn error occurred while installing json (1.8.2), and Bundler cannot continue.
DEBUG [1a250078]
DEBUG [1a250078] Make sure that gem install json -v '1.8.2' succeeds before bundling.[0m
DEBUG [1a250078]

I have tried everything from "making sure that gem install json -v 1.8.2" works on the server (which it does) to wiping the server and starting again.

Also, if I want to retry the deploy using capistrano I get an error because the symbolic link for nginx is not setup, which means I then need to remove the "apps" directory in /home/deploy/ on my server. Once I have done that, attempting to deploy will once again render the json -v '1.8.2' error.

I really do not know what to do. My gemfile works perfectly locally.

2 Answers

Trying installing libgmp3-dev in order to resolve this issue on Ubuntu 14.04 LTS

On your droplet:

$ sudo apt-get install libgmp3-dev

Once that's installed, install the latest version of the json gem:

$ gem install json

If you run rbenv global 2.4.0, gem JSON have issues with 2.4.0. Try to downgrade to 2.3.1:
rbenv install 2.3.1
rbenv global 2.3.1
ruby -v

& remember to update your capfile to: set :rbenv_ruby, '2.3.1'

Have another answer? Share your knowledge.