Jim Gay wrote:
Actually, I have found this quite useful since you don't always have
access to installing extra gems (or your host is already on different
versions, etc.) - just like you can freeze rails to a specific version
in your specific application, this provides you the ability to create a
"Radiant app" (similar to a Rails app) with the correct versions of
everything (except Ruby) already included.
On Feb 26, 2009, at 10:22 PM, Mark Glossop wrote:
On 26/02/09 05:58, somebody called Mark Glossop
Evidently that's not enough of a reason for me to _not_ use it,
but the question remains:
Why is Radiant delivered as a gem with "all the dependencies
put another way, why is it not delivered as a Ruby gem with external
dependencies, that generates a "standard" Rails app structure when
Some clarification (please note, all of the following are IHMO):
* Some much larger apps [Redmine comes to mind] don't use this
are actually simpler to deploy than Radiant. Really.
* Yes, I know "standard" isn't exactly well-defined AFA Rails is
* "gem unpack" is not a valid answer/workaround.
You can also "rake radiant:freeze:gems" or "rake radiant:freeze:edge"
Or you could clone the repository and modify it just like any other app.
* The closest rationale I have found for this question is in the
Radiant FAQ -
"Gems: Versions of any required libraries are built-in. So that
means that you
don't need to have the rails gem installed: the radiant gem comes
a particular version."
* It also makes it harder to consider contributing code to Radiant.
Apart from my own curiosity, my business partners will want to know
why I have
chosen Radiant for the CMS I am working on. This info helps me with
If the full reasoning behind this design decision is already online
please just point me there, as my Google-fu has obviously not been
Sorry to nag, but - anyone? Bueller?
In case this was somehow regarded as trollbait, I'm asking this as a
legitimate query...it really is quite important for me to know, and
a factor for me ATM.
To summarise the above verbiage:
Why is Radiant delivered with all dependencies included?
Including the dependencies means the instructions for getting started
for new users will be much simpler.
As long as you have a compliant Ruby version on your server, you can use
it straight away.
That said, I think you are asking 2 questions without clearly saying it:
1. Why is Radiant provided with all its dependencies?
I think the answer is that it reduces dependencies on external code and
different versions of things. Radiant itself uses a number of plugins
and gems (incl Rails) for its work. Out of box, you are assured that
what is provided is tested to work.
Imagine if you had Textile 4 on the server and Radiant was tested only
with Textile 3.2 and for some reason, there was a conflict that
prevented it from working properly. Here, you know it will work because
it relies on a pre-bundled version. Or in another case, you may have
that Radiant is built with Textile 4 and your server only has Textile
3.2 - so, Radiant fails!
In that case, you'd end up with a situation where the installation
instructions go something like:
* Install Textile 4.0 (there are known issues with 3.2 which we will not
fix because we are on a newer version)
* Install acts_as_list (version xx.y)
* Install acts_as_authenticated (version xx.y)
...and so on!
You *must* see Radiant as a domain-specific Rails application (though
you can even see it as a domain-specific Ruby application that relies on
a gem called Rails) that provides everything that you need to run it.
I hope that this clarifies this point.
2. I think your second question is more along the lines of why don't I
just get a Rails app, rather than a Rails app that looks like a gem?
This ties in with your comment about not being able to contribute
effectively to the code, etc. I get the feeling that you would prefer a
system where when you run "radiant my_site", you would get the standard
Rails directories, including app, app>view, app>controllers, etc.
I think some of the Radiant core team can answer this better than me,
but I'll tell you what I *feel* about this structure.
a) It makes some things more difficult for the average Rails programmer
b) It makes many things much simpler for the average CMS developer
c) If Radiant works, my life is much simpler - I don't need to worry or
look at how Radiant is built to be able to use it effectively.
Since you started by pointing to Redmine, my answer would be: Redmine is
a Rails application for project tracking, etc. It is not a "framework"
for building project tracking applications. IMHO, Radiant is a
framework for building CMS sites. Therefore, the base stuff is kept out
of your way while you can go ahead and build the other things you need -
content, markup, extensions and plugins. You don't use "radiant", you
use a site built using Radiant.
In some ways, I could say that asking why Radiant is a gem with
dependencies is like asking: why is Rails a gem? Why isn't Rails just
distributed as a set of libraries that someone has to put together by
themselves. I don't know Rails internals, but the question is akin to
asking if all the internal parts of Rails should have been distributed
Hope this helps.
2/27/2009 | 12:02 PM.
Radiant mailing list