From 234a7d74d57084a78e51cc52861a81f7d0748a6d Mon Sep 17 00:00:00 2001 From: Philip Arndt Date: Fri, 4 Mar 2011 11:54:12 +1300 Subject: Moved most of the code toward EngineInstaller. --- .../migration_number_add_user_id_to_blog_posts.rb | 11 +++ .../migration_number_create_singular_name.rb | 26 +++++++ db/seeds/seed.rb | 16 ++++ .../migration_number_add_user_id_to_blog_posts.rb | 11 --- .../migration_number_create_singular_name.rb | 26 ------- .../refinerycms_blog/templates/db/seeds/seed.rb | 16 ---- lib/generators/refinerycms_blog_generator.rb | 88 ++-------------------- lib/refinerycms-blog.rb | 2 +- 8 files changed, 59 insertions(+), 137 deletions(-) create mode 100644 db/migrate/migration_number_add_user_id_to_blog_posts.rb create mode 100644 db/migrate/migration_number_create_singular_name.rb create mode 100644 db/seeds/seed.rb delete mode 100644 lib/generators/refinerycms_blog/templates/db/migrate/migration_number_add_user_id_to_blog_posts.rb delete mode 100644 lib/generators/refinerycms_blog/templates/db/migrate/migration_number_create_singular_name.rb delete mode 100644 lib/generators/refinerycms_blog/templates/db/seeds/seed.rb diff --git a/db/migrate/migration_number_add_user_id_to_blog_posts.rb b/db/migrate/migration_number_add_user_id_to_blog_posts.rb new file mode 100644 index 0000000..cd62524 --- /dev/null +++ b/db/migrate/migration_number_add_user_id_to_blog_posts.rb @@ -0,0 +1,11 @@ +class AddUserIdToBlogPosts < ActiveRecord::Migration + + def self.up + add_column :blog_posts, :user_id, :integer + end + + def self.down + remove_column :blog_posts, :user_id + end + +end \ No newline at end of file diff --git a/db/migrate/migration_number_create_singular_name.rb b/db/migrate/migration_number_create_singular_name.rb new file mode 100644 index 0000000..badb213 --- /dev/null +++ b/db/migrate/migration_number_create_singular_name.rb @@ -0,0 +1,26 @@ +class Create<%= singular_name.camelize %> < ActiveRecord::Migration + + def self.up<% @refinerycms_blog_tables.each do |table| %> + create_table :<%= table[:table_name] %>, :id => <%= table[:id].to_s %> do |t| +<% table[:attributes].each do |attribute| -%> + t.<%= attribute.type %> :<%= attribute.name %> +<% end -%> + <%= 't.timestamps' if table[:id] %> + end + + <%= "add_index :#{table[:table_name]}, :id" if table[:id] %> +<% end -%> + load(Rails.root.join('db', 'seeds', 'refinerycms_blog.rb').to_s) + end + + def self.down + UserPlugin.destroy_all({:name => "refinerycms_blog"}) + + Page.delete_all({:link_url => "/blog"}) + +<% @refinerycms_blog_tables.each do |table| -%> + drop_table :<%= table[:table_name] %> +<% end -%> + end + +end diff --git a/db/seeds/seed.rb b/db/seeds/seed.rb new file mode 100644 index 0000000..f958fab --- /dev/null +++ b/db/seeds/seed.rb @@ -0,0 +1,16 @@ +User.find(:all).each do |user| + user.plugins.create(:name => "refinerycms_blog", + :position => (user.plugins.maximum(:position) || -1) +1) +end + +page = Page.create( + :title => "Blog", + :link_url => "/blog", + :deletable => false, + :position => ((Page.maximum(:position, :conditions => {:parent_id => nil}) || -1)+1), + :menu_match => "^/blogs?(\/|\/.+?|)$" +) + +Page.default_parts.each do |default_page_part| + page.parts.create(:title => default_page_part, :body => nil) +end diff --git a/lib/generators/refinerycms_blog/templates/db/migrate/migration_number_add_user_id_to_blog_posts.rb b/lib/generators/refinerycms_blog/templates/db/migrate/migration_number_add_user_id_to_blog_posts.rb deleted file mode 100644 index cd62524..0000000 --- a/lib/generators/refinerycms_blog/templates/db/migrate/migration_number_add_user_id_to_blog_posts.rb +++ /dev/null @@ -1,11 +0,0 @@ -class AddUserIdToBlogPosts < ActiveRecord::Migration - - def self.up - add_column :blog_posts, :user_id, :integer - end - - def self.down - remove_column :blog_posts, :user_id - end - -end \ No newline at end of file diff --git a/lib/generators/refinerycms_blog/templates/db/migrate/migration_number_create_singular_name.rb b/lib/generators/refinerycms_blog/templates/db/migrate/migration_number_create_singular_name.rb deleted file mode 100644 index badb213..0000000 --- a/lib/generators/refinerycms_blog/templates/db/migrate/migration_number_create_singular_name.rb +++ /dev/null @@ -1,26 +0,0 @@ -class Create<%= singular_name.camelize %> < ActiveRecord::Migration - - def self.up<% @refinerycms_blog_tables.each do |table| %> - create_table :<%= table[:table_name] %>, :id => <%= table[:id].to_s %> do |t| -<% table[:attributes].each do |attribute| -%> - t.<%= attribute.type %> :<%= attribute.name %> -<% end -%> - <%= 't.timestamps' if table[:id] %> - end - - <%= "add_index :#{table[:table_name]}, :id" if table[:id] %> -<% end -%> - load(Rails.root.join('db', 'seeds', 'refinerycms_blog.rb').to_s) - end - - def self.down - UserPlugin.destroy_all({:name => "refinerycms_blog"}) - - Page.delete_all({:link_url => "/blog"}) - -<% @refinerycms_blog_tables.each do |table| -%> - drop_table :<%= table[:table_name] %> -<% end -%> - end - -end diff --git a/lib/generators/refinerycms_blog/templates/db/seeds/seed.rb b/lib/generators/refinerycms_blog/templates/db/seeds/seed.rb deleted file mode 100644 index f958fab..0000000 --- a/lib/generators/refinerycms_blog/templates/db/seeds/seed.rb +++ /dev/null @@ -1,16 +0,0 @@ -User.find(:all).each do |user| - user.plugins.create(:name => "refinerycms_blog", - :position => (user.plugins.maximum(:position) || -1) +1) -end - -page = Page.create( - :title => "Blog", - :link_url => "/blog", - :deletable => false, - :position => ((Page.maximum(:position, :conditions => {:parent_id => nil}) || -1)+1), - :menu_match => "^/blogs?(\/|\/.+?|)$" -) - -Page.default_parts.each do |default_page_part| - page.parts.create(:title => default_page_part, :body => nil) -end diff --git a/lib/generators/refinerycms_blog_generator.rb b/lib/generators/refinerycms_blog_generator.rb index 86c96ec..3f3d35a 100644 --- a/lib/generators/refinerycms_blog_generator.rb +++ b/lib/generators/refinerycms_blog_generator.rb @@ -1,87 +1,9 @@ -require 'rails/generators/migration' +require 'refinery/generators' -class RefinerycmsBlogGenerator < Rails::Generators::NamedBase - include Rails::Generators::Migration +class RefinerycmsBlogGenerator < ::Refinery::Generators::EngineInstaller - source_root File.expand_path('../refinerycms_blog/templates/', __FILE__) + source_root File.expand_path('../../../', __FILE__) argument :name, :type => :string, :default => 'blog_structure', :banner => '' + engine_name "refinerycms-blog" - def generate - # seed file - template 'db/seeds/seed.rb', Rails.root.join('db/seeds/refinerycms_blog.rb') - - # migration file - @refinerycms_blog_tables = [{ - :table_name => 'blog_posts', - :attributes => [ - Rails::Generators::GeneratedAttribute.new('title', 'string'), - Rails::Generators::GeneratedAttribute.new('body', 'text'), - Rails::Generators::GeneratedAttribute.new('draft', 'boolean'), - Rails::Generators::GeneratedAttribute.new('published_at', 'datetime') - ], :id => true - },{ - :table_name => 'blog_comments', - :attributes => [ - Rails::Generators::GeneratedAttribute.new('blog_post_id', 'integer'), - Rails::Generators::GeneratedAttribute.new('spam', 'boolean'), - Rails::Generators::GeneratedAttribute.new('name', 'string'), - Rails::Generators::GeneratedAttribute.new('email', 'string'), - Rails::Generators::GeneratedAttribute.new('body', 'text'), - Rails::Generators::GeneratedAttribute.new('state', 'string'), - ], :id => true - },{ - :table_name => 'blog_categories', - :attributes => [ - Rails::Generators::GeneratedAttribute.new('title', 'string') - ], :id => true - },{ - :table_name => 'blog_categories_blog_posts', - :attributes => [ - Rails::Generators::GeneratedAttribute.new('blog_category_id', 'integer'), - Rails::Generators::GeneratedAttribute.new('blog_post_id', 'integer') - ], :id => false - }] - unless Pathname.glob(Rails.root.join('db', 'migrate', "*_create_#{singular_name}.rb")).any? - next_migration_number = ActiveRecord::Generators::Base.next_migration_number(File.dirname(__FILE__)) - template('db/migrate/migration_number_create_singular_name.rb', - Rails.root.join("db/migrate/#{next_migration_number}_create_#{singular_name}.rb")) - end - unless Pathname.glob(Rails.root.join('db', 'migrate', "*_add_user_id_to_blog_posts.rb")).any? - next_migration_number = ActiveRecord::Generators::Base.next_migration_number(File.dirname(__FILE__)) - template('db/migrate/migration_number_add_user_id_to_blog_posts.rb', - Rails.root.join('db', 'migrate', "#{next_migration_number}_add_user_id_to_blog_posts.rb")) - end - - puts "------------------------" - puts "Now run:" - puts "rake db:migrate" - puts "------------------------" - end -end - -# Below is a hack until this issue: -# https://rails.lighthouseapp.com/projects/8994/tickets/3820-make-railsgeneratorsmigrationnext_migration_number-method-a-class-method-so-it-possible-to-use-it-in-custom-generators -# is fixed on the Rails project. - -require 'rails/generators/named_base' -require 'rails/generators/migration' -require 'rails/generators/active_model' -require 'active_record' - -module ActiveRecord - module Generators - class Base < Rails::Generators::NamedBase #:nodoc: - include Rails::Generators::Migration - - # Implement the required interface for Rails::Generators::Migration. - def self.next_migration_number(dirname) #:nodoc: - next_migration_number = current_migration_number(dirname) + 1 - if ActiveRecord::Base.timestamped_migrations - [Time.now.utc.strftime("%Y%m%d%H%M%S"), "%.14d" % next_migration_number].max - else - "%.3d" % next_migration_number - end - end - end - end -end +end \ No newline at end of file diff --git a/lib/refinerycms-blog.rb b/lib/refinerycms-blog.rb index 1c4cbfc..ed2eb2d 100644 --- a/lib/refinerycms-blog.rb +++ b/lib/refinerycms-blog.rb @@ -38,7 +38,7 @@ module Refinery class << self def version - %q{1.2} + %q{1.3} end end end -- cgit v1.2.3