Permalink
Browse files

Added -f/--freeze option to rails command for freezing the applicatio…

…n to the Rails version it was generated with [DHH] Fixed rake rails:freeze:gems (closes #4518) [benji@silverinsanity.com]

git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@4115 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
  • Loading branch information...
1 parent 237cc94 commit d08f838c0e4d626a1b78c7799e0cad878ce4943c @dhh dhh committed Apr 1, 2006
View
@@ -1,8 +1,12 @@
*SVN*
-* Make Rails::VERSION implicitly loadable. Closes #4491. [Nicholas Seckar]
+* Make Rails::VERSION implicitly loadable #4491. [Nicholas Seckar]
-* Teach Rails apps to only load gems of the same Rails version they were generated with. [Nicholas Seckar]
+* Fixed rake rails:freeze:gems #4518 [benji@silverinsanity.com]
+
+* Added -f/--freeze option to rails command for freezing the application to the Rails version it was generated with [DHH]
+
+* Added gem binding of apps generated through the rails command to the gems of they were generated with [Nicholas Seckar]
* Added expiration settings for JavaScript, CSS, HTML, and images to default lighttpd.conf [DHH]
View
@@ -4,8 +4,13 @@ Signal.trap("INT") { puts; exit }
require File.dirname(__FILE__) + '/../lib/rails/version'
abort "Rails #{Rails::VERSION::STRING}" if %w(--version -v).include? ARGV.first
+freeze = ARGV.any? { |option| %w(--freeze -f).include?(option) }
+app_path = ARGV.first
+
require File.dirname(__FILE__) + '/../lib/rails_generator'
require 'rails_generator/scripts/generate'
Rails::Generator::Base.use_application_sources!
Rails::Generator::Scripts::Generate.new.run(ARGV, :generator => 'app')
+
+Dir.chdir(app_path) { `rake rails:freeze:gems`; puts "froze" } if freeze
@@ -5,7 +5,7 @@
# ENV['RAILS_ENV'] ||= 'production'
# Specifies gem version of Rails to use when vendor/rails is not present
-RAILS_GEM_VERSION = '<%= Rails::VERSION::STRING %>'
+<%= '# ' if freeze %>RAILS_GEM_VERSION = '<%= Rails::VERSION::STRING %>'
# Bootstrap the Rails environment, frameworks, and default configuration
require File.join(File.dirname(__FILE__), 'boot')
@@ -6,7 +6,7 @@ class AppGenerator < Rails::Generator::Base
DATABASES = %w( mysql oracle postgresql sqlite2 sqlite3 )
- default_options :db => "mysql", :shebang => DEFAULT_SHEBANG
+ default_options :db => "mysql", :shebang => DEFAULT_SHEBANG, :freeze => false
mandatory_options :source => "#{File.dirname(__FILE__)}/../../../../.."
def initialize(runtime_args, runtime_options = {})
@@ -44,7 +44,7 @@ def manifest
# Environments
m.file "environments/boot.rb", "config/boot.rb"
- m.template "environments/environment.rb", "config/environment.rb"
+ m.template "environments/environment.rb", "config/environment.rb", :assigns => { :freeze => options[:freeze] }
m.file "environments/production.rb", "config/environments/production.rb"
m.file "environments/development.rb", "config/environments/development.rb"
m.file "environments/test.rb", "config/environments/test.rb"
@@ -100,6 +100,10 @@ def add_options!(opt)
opt.on("-d", "--database=name", String,
"Preconfigure for selected database (options: mysql/oracle/postgresql/sqlite2/sqlite3).",
"Default: mysql") { |options[:db]| }
+
+ opt.on("-f", "--freeze",
+ "Freeze Rails in vendor/rails from the gems generating the skeleton",
+ "Default: false") { |options[:freeze]| }
end
def mysql_socket_location
@@ -6,7 +6,7 @@ namespace :rails do
require 'rubygems'
Gem.manage_gems
- rails = version = ENV['VERSION'] ?
+ rails = (version = ENV['VERSION']) ?
Gem.cache.search('rails', "= #{version}").first :
Gem.cache.search('rails').sort_by { |g| g.version }.last

0 comments on commit d08f838

Please sign in to comment.