aboutsummaryrefslogtreecommitdiffstats
path: root/railties/lib/rails_generator/generators/components
diff options
context:
space:
mode:
Diffstat (limited to 'railties/lib/rails_generator/generators/components')
-rw-r--r--railties/lib/rails_generator/generators/components/migration/migration_generator.rb50
-rw-r--r--railties/lib/rails_generator/generators/components/session_migration/USAGE15
-rw-r--r--railties/lib/rails_generator/generators/components/session_migration/session_migration_generator.rb13
-rw-r--r--railties/lib/rails_generator/generators/components/session_migration/templates/migration.rb15
4 files changed, 43 insertions, 50 deletions
diff --git a/railties/lib/rails_generator/generators/components/migration/migration_generator.rb b/railties/lib/rails_generator/generators/components/migration/migration_generator.rb
index 09674261da..95652139f9 100644
--- a/railties/lib/rails_generator/generators/components/migration/migration_generator.rb
+++ b/railties/lib/rails_generator/generators/components/migration/migration_generator.rb
@@ -5,54 +5,4 @@ class MigrationGenerator < Rails::Generator::NamedBase
m.migration_template 'migration.rb', 'db/migrate'
end
end
-
- protected
- def existing_migrations(file_name)
- Dir.glob("db/migrate/[0-9]*_#{file_name}.rb")
- end
-
- def migration_exists?(file_name)
- not existing_migrations(file_name).empty?
- end
-
- def current_migration_number
- Dir.glob('db/migrate/[0-9]*.rb').inject(0) do |max, file_path|
- n = File.basename(file_path).split('_', 2).first.to_i
- if n > max then n else max end
- end
- end
-
- def next_migration_number
- current_migration_number + 1
- end
-
- def next_migration_string(padding = 3)
- "%.#{padding}d" % next_migration_number
- end
-end
-
-module Rails::Generator::Commands
- # When creating, it knows to find the first available file in db/migrate and use the migration.rb template.
- class Create
- def migration_template(relative_source, relative_destination, template_options = {})
- raise "Another migration is already named #{file_name}: #{existing_migrations(file_name).first}" if migration_exists?(file_name)
- template(relative_source, "#{relative_destination}/#{next_migration_string}_#{file_name}.rb", template_options)
- end
- end
-
- # When deleting, it knows to delete every file named "[0-9]*_#{file_name}".
- class Destroy
- def migration_template(relative_source, relative_destination, template_options = {})
- raise "There is no migration named #{file_name}" unless migration_exists?(file_name)
- existing_migrations(file_name).each do |file_path|
- file(relative_source, file_path, template_options)
- end
- end
- end
-
- class List
- def migration_template(relative_source, relative_destination, options = {})
- logger.migration_template file_name
- end
- end
end
diff --git a/railties/lib/rails_generator/generators/components/session_migration/USAGE b/railties/lib/rails_generator/generators/components/session_migration/USAGE
new file mode 100644
index 0000000000..43e4e54c97
--- /dev/null
+++ b/railties/lib/rails_generator/generators/components/session_migration/USAGE
@@ -0,0 +1,15 @@
+Description:
+ The session table migration generator creates a migration for adding a session table
+ used by CGI::Session::ActiveRecordStore.
+
+ The generator takes a migration name as its argument. The migration name may be
+ given in CamelCase or under_score.
+
+ The generator creates a migration class in db/migrate prefixed by its number
+ in the queue.
+
+Example:
+ ./script/generate session_migration AddSessionTable
+
+ With 4 existing migrations, this will create an AddSessionTable migration in the
+ file db/migrate/5_add_session_table.rb \ No newline at end of file
diff --git a/railties/lib/rails_generator/generators/components/session_migration/session_migration_generator.rb b/railties/lib/rails_generator/generators/components/session_migration/session_migration_generator.rb
new file mode 100644
index 0000000000..12802858f6
--- /dev/null
+++ b/railties/lib/rails_generator/generators/components/session_migration/session_migration_generator.rb
@@ -0,0 +1,13 @@
+class SessionMigrationGenerator < Rails::Generator::NamedBase
+ def initialize(runtime_args, runtime_options = {})
+ runtime_args << 'add_session_table' if runtime_args.empty?
+ super
+ end
+
+ def manifest
+ record do |m|
+ m.directory 'db/migrate'
+ m.migration_template 'migration.rb', 'db/migrate'
+ end
+ end
+end
diff --git a/railties/lib/rails_generator/generators/components/session_migration/templates/migration.rb b/railties/lib/rails_generator/generators/components/session_migration/templates/migration.rb
new file mode 100644
index 0000000000..0ab7fcb1e9
--- /dev/null
+++ b/railties/lib/rails_generator/generators/components/session_migration/templates/migration.rb
@@ -0,0 +1,15 @@
+class <%= class_name %> < ActiveRecord::Migration
+ def self.up
+ create_table :sessions do |t|
+ t.column :session_id, :string
+ t.column :data, :text
+ t.column :updated_at, :datetime
+ end
+
+ add_index :sessions, :session_id
+ end
+
+ def self.down
+ drop_table :sessions
+ end
+end