diff --git a/railties/CHANGELOG b/railties/CHANGELOG index fc7a495853419cf5ac2df27cb9faa7553600c62d..fab2a5c383ec57870279926e6c04f6e35f75d480 100644 --- a/railties/CHANGELOG +++ b/railties/CHANGELOG @@ -1,5 +1,10 @@ *SVN* +* Added collision option to template generation in generators #3329 [anna@wota.jp]. Examples: + + m.template "stuff.config" , "config/stuff.config" , :collision => :skip + m.template "auto-stamping", "config/generator.log", :collision => :force + * Added more information to script/plugin's doings to ease debugging #3755 [Rick Olson] * Changed the default configuration for lighttpd to use tmp/sockets instead of log/ for the FastCGI sockets [DHH] diff --git a/railties/lib/rails_generator/commands.rb b/railties/lib/rails_generator/commands.rb index dd72436fc89b6c09447c4ae59943df576e007c0d..3e02e3cc41d42702d8b4afac061d474b28dabe29 100644 --- a/railties/lib/rails_generator/commands.rb +++ b/railties/lib/rails_generator/commands.rb @@ -163,11 +163,13 @@ def class_collisions(*class_names) # Copy a file from source to destination with collision checking. # - # The file_options hash accepts :chmod and :shebang options. + # The file_options hash accepts :chmod and :shebang and :collision options. # :chmod sets the permissions of the destination file: # file 'config/empty.log', 'log/test.log', :chmod => 0664 # :shebang sets the #!/usr/bin/ruby line for scripts # file 'bin/generate.rb', 'script/generate', :chmod => 0755, :shebang => '/usr/bin/env ruby' + # :collision sets the collision option only for the destination file: + # file 'settings/server.yml', 'config/server.yml', :collision => :skip # # Collisions are handled by checking whether the destination file # exists and either skipping the file, forcing overwrite, or asking @@ -188,7 +190,7 @@ def file(relative_source, relative_destination, file_options = {}, &block) # Make a choice whether to overwrite the file. :force and # :skip already have their mind made up, but give :ask a shot. - choice = case options[:collision].to_sym #|| :ask + choice = case (file_options[:collision] || options[:collision]).to_sym #|| :ask when :ask then force_file_collision?(relative_destination) when :force then :force when :skip then :skip