Right or wrong, I’m using Radiant CMS for a static website that will change very infrequently. I’ll be the one administering those changes and therefore won’t need a publically accessible admin for managing the content. Oh… and I’m cheap and lazy. I don’t want to pay for ruby hosting resources and I don’t want to have to deploy another rails site (although it’s not too difficult anymore).
Maybe Radiant’s not the best choice for this, but it was a prime opportunity to dabble and learn. Along with learning Radiant I’ve also had to learn how to deploy it statically. I was under the impression that there was an extension to do this already, but after spending a short time looking I decided to hack out my own non-extension.
It’s a combination of using wget and doing a little file movement & renaming to accomodate an HTTP server:
#!/usr/bin/ruby # cp_radiant.rb require 'fileutils' def process_dir(dir_path) Dir.chdir(dir_path) do (all=Dir["*"]).each do |file_name| if File.directory?(file_name) if all.include?(source_index="#{file_name}.html") FileUtils.cp("#{source_index}", (dest_index=File.join(file_name, "index.html"))) puts "...RESTRUCTURED #{source_index} to #{dest_index}" end process_dir(File.expand_path(file_name)) end end end end if(url = ARGV.first) puts "FETCHING SITE... #{url}" `wget -E --no-verbose --no-cache --mirror #{url}` puts puts result_dir = File.join(Dir.pwd, url.gsub(/http:\/\//,'')) puts "POST PROCESSING #{result_dir}" process_dir(result_dir) else puts "MISSING URL ARGUMENT" end
Using it like so will copy the entire site down locally in a new directory named “http://localhost:3000″:
ruby cp_radiant.rb http://localhost:3000
I’m also using Apache as my HTTP server and have added the following entry to my .htaccess file to accommodate URLs without the file extension:
Options +FollowSymLinks
Options +Indexes
RewriteEngine On
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^([^\.]+)$ $1.html [NC,L]Once again… this is just a hack to get something done, but I figure it may help someone else with their misuse of Radiant.
Enjoy!

Ha. Crazy! I’ve been tempted too.
This is kind of cool, easy and cool hack.
What I was just thinking about the other day was similar idea, but a bit more user friendly. As Radiant (and Rails in general) tend to eat tones of RAM, I’d like to spawn Radiant only when user tries to log in/make changes to site, and then shut it down and serve static files only after that.
Maybe one day I will implement this and let you know ;).
@Hubert: If you’re using Passenger the spawning/killing of inactive apps is already there, there’s no point in reinventing the wheel.
[...] more here: Hacktastic! Radiant CMS Static Deployment - pillowfactory.org By admin | category: Object, Radiant CMS | tags: allows-customization, change-very, cms, [...]