Creating a new Edge Rails project in Windows (and *nix / OSX too!)
Rails has moved to Git so the scripts here no longer work! Visit the updated article instead.
I’ve been working with Edge Rails a lot lately, in preparation for a book I’m working on. Creating a new Rails project with Edge is a bit tricky—you need to have Edge Rails in your app’s vendor/rails folder before you can create your app. It usually involves the following steps:
- Create the project’s folder
- Create the vendor folder
- Export Edge Rails to the vendor/rails folder
- Create the Rails project using the vendor/rails/railities/bin/rails script instead of the normal one.
It seems that every time I want to do this, I have to go look at my notes and remember how. Not any more.
edge_rails
On Windows, paste this script into a new file and save the file to c:\ruby\bin\edge_rails.
@echo off goto endofruby #!/bin/ruby require 'fileutils' dir = ARGV[0] dbtype = ARGV[1] rescue nil FileUtils::mkdir(dir) FileUtils::mkdir("#{dir}/vendor") puts "Exporting EdgeRails from http://svn.rubyonrails.org/rails/trunk" system "svn export http://svn.rubyonrails.org/rails/trunk #{dir}/vendor/rails" system "ruby #{dir}/vendor/rails/railties/bin/rails #{dir} #{dbtype}" __END__ :endofruby "%~d0%~p0ruby" -x "%~f0" %*
Now, to create a new Edge Rails project, simply do
edge_rails my_app_name
or
edge_rails my_app_name --database=sqlite3
Right now, I’m not supporting any of the other command line options. If you want them, figure out how to do it. It’ll be a good exercise for you.
If you want to do this on a non-Windows system, just save the script below to a file called edge_rails, place the file on your path, and be sure to make it executable. You may need to change the first line of the script to correctly point to your ruby installation. Use
which ruby
to locate your Ruby path.
Here’s the script with all the Windows goodness removed.
#!/bin/ruby require 'fileutils' dir = ARGV[0] dbtype = ARGV[1] rescue nil FileUtils::mkdir(dir) FileUtils::mkdir("#{dir}/vendor") puts "Exporting EdgeRails from http://svn.rubyonrails.org/rails/trunk" system "svn export http://svn.rubyonrails.org/rails/trunk #{dir}/vendor/rails" system "ruby #{dir}/vendor/rails/railties/bin/rails #{dir} #{dbtype}"
Hope that makes someone else’s life easier too.