Added -f/--freeze option to rails command for freezing the application to the...

Added -f/--freeze option to rails command for freezing the application 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
上级 237cc945
*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]
......
......@@ -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
\ No newline at end of file
......@@ -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
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册