So someone requested me to deploy rails on 30+ machines, he has a
fully developped rails app on his local machine - only trouble is: he
installed everything using gem.
Now, since I have to care for more than 70 servers and workstations
there are a number of organizational policy rules regarding system
administration: Nothing EVER gets installed that bypasses the package
management system (be it rpm or deb). Needless to say this clashes
with gem.
Unfortunately installing "gemless" rails works for newly created rails
applications, but not for his fully developed (complains about missing
rails gem). Now the question is: How can I help him to make his
application runnable is this environment and avoid the same pitfall in
the future? (and what did he do wrong to begin with?)
Of course I can always tell him he has to locally compile and deploy
all gems himself as non-root in his own directories, but he won't be
happy and neither do I like this.
well this just pushes the administrative burden off my desk, so it is
fine with me
however this still means no centralized management of >30
installations...
Heh. Well if you upload the code to an SVN repository and use the tips I
suggested (railsfreeze andgemunpacks), you can effectively create an
isolated workingrailsapplication. (Obviously Ruby and MySQL would be
the two pre-requisites).
sounds reasonable and we are probably going to do that for the
moment... but one problem we will be hitting sooner or later with this
approach: gems containing native code are linked to the specific
library versions on the development machine, transferring those to
other machines with different versions may or may not break, and
sooner or later we will hit architecture issues (switch from 32 to 64
bit)
so the question is whether this approach just creates a "better
hidden" mess that still needs to be sorted out later
is there a good tutorial for creating and using "private" gem
repositories? or, alternatively, packaging the things up in .debs
and .rpms so they can be fed through our install repositories and
managed sanely
Using Capistrano or Vlad as the previous poster mentioned, people could
simply check out copies from the SVN server (which could be updated as
needed) and then pushed to the production servers using Capistrano.
i will pass on this recommendation, but ulitmately i don't know how
the rails apps are going to be maintained, i just have to provide the
infrastructure