Ruby on Rails is messy to deploy. Rails developers don't care much for backward compatibility and so any complex rails application needs a specific set of gems - often at exactly the version that the $upstream authors developed against. Because of this many upstream projects are shipping either a complete rails stack or are reverting to bundler to get the stack their app needs. This all reminds me of what java apps used to be like. The java ecosystem has matured in that respect (at least the parts that I'm seeing) so there is hope for the same to happen to the rails world.
But in the meantime there is one rails application that is useful enough to warrant the trouble of getting it deployed. This application is redmine - a bugtracker/workflow-tool/wiki/scm-viewer thing I'm maintaining for the merkaartor OpenStreetmap editor. The redmine instance that merkaartor.be is currently running is 1.0.3 (which is way too old) additionally it was running on a Fedora 14 VM so that needed an update too.
Here are some of my notes from getting redmine running on Fedora 17:
First of all modrails (also known as passenger) is needed as runtime environment and glue to the apache webserver. This isn't currently in the Fedora repositories - it was stuck in review for a very long time because it does bundle a modified copy of the boost libraries. A few weeks ago Fesco did approve an exception to allow it to be included (after Kanarip and others did work with upstream to get other issues resolved) but now there are concerns about trademarks on the passenger name which might not allow the Fedora project to ship the package. You can get all the details - and much more important links to a working SRPM in this bug.
After getting passenger installed and working (make sure to have gcc ruby-devel and make installed when trying to start passenger) and the redmine tarball untarred, you'll need to:
yum install rubygem-bundler mysql-devel postgresql-devel ImageMagick-devel sqlite-devel
Edit the File Gemfile in the redmine root-directory and add
gem "minitest"
to the block of gem requires at the top of the file.
This change is needed because minitest is an indirect dependency (through rails) that ins't resolved any other way so not adding it will break activerecord related functionality that is needed for redmine.
After this change a
bundle install
should install all needed rubygems locally. You should think twice about running this command as root because that will install the gems systemwide into /usr/local instead of into ~/.gem where they will be installed when run as the apache user.
Post new comment