tennpipes-init 3.6.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (167) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE.txt +20 -0
  3. data/README.rdoc +163 -0
  4. data/Rakefile +1 -0
  5. data/bin/tennpipes-init +16 -0
  6. data/lib/tennpipes-init.rb +73 -0
  7. data/lib/tennpipes-init/command.rb +18 -0
  8. data/lib/tennpipes-init/generators/actions.rb +630 -0
  9. data/lib/tennpipes-init/generators/app.rb +75 -0
  10. data/lib/tennpipes-init/generators/app/app.rb.tt +72 -0
  11. data/lib/tennpipes-init/generators/app/app.rb.tt~ +72 -0
  12. data/lib/tennpipes-init/generators/cli.rb +57 -0
  13. data/lib/tennpipes-init/generators/component.rb +73 -0
  14. data/lib/tennpipes-init/generators/components/actions.rb +208 -0
  15. data/lib/tennpipes-init/generators/components/mocks/mocha.rb +10 -0
  16. data/lib/tennpipes-init/generators/components/mocks/rr.rb +13 -0
  17. data/lib/tennpipes-init/generators/components/orms/activerecord.rb +201 -0
  18. data/lib/tennpipes-init/generators/components/orms/couchrest.rb +55 -0
  19. data/lib/tennpipes-init/generators/components/orms/datamapper.rb +140 -0
  20. data/lib/tennpipes-init/generators/components/orms/dynamoid.rb +67 -0
  21. data/lib/tennpipes-init/generators/components/orms/minirecord.rb +165 -0
  22. data/lib/tennpipes-init/generators/components/orms/mongoid.rb +113 -0
  23. data/lib/tennpipes-init/generators/components/orms/mongomapper.rb +43 -0
  24. data/lib/tennpipes-init/generators/components/orms/mongomatic.rb +84 -0
  25. data/lib/tennpipes-init/generators/components/orms/ohm.rb +65 -0
  26. data/lib/tennpipes-init/generators/components/orms/ripple.rb +75 -0
  27. data/lib/tennpipes-init/generators/components/orms/sequel.rb +99 -0
  28. data/lib/tennpipes-init/generators/components/renderers/erb.rb +3 -0
  29. data/lib/tennpipes-init/generators/components/renderers/haml.rb +3 -0
  30. data/lib/tennpipes-init/generators/components/renderers/liquid.rb +4 -0
  31. data/lib/tennpipes-init/generators/components/renderers/slim.rb +3 -0
  32. data/lib/tennpipes-init/generators/components/scripts/dojo.rb +10 -0
  33. data/lib/tennpipes-init/generators/components/scripts/extcore.rb +10 -0
  34. data/lib/tennpipes-init/generators/components/scripts/jquery.rb +10 -0
  35. data/lib/tennpipes-init/generators/components/scripts/mootools.rb +10 -0
  36. data/lib/tennpipes-init/generators/components/scripts/prototype.rb +12 -0
  37. data/lib/tennpipes-init/generators/components/scripts/rightjs.rb +10 -0
  38. data/lib/tennpipes-init/generators/components/stylesheets/compass.rb +39 -0
  39. data/lib/tennpipes-init/generators/components/stylesheets/compass/application.scss +43 -0
  40. data/lib/tennpipes-init/generators/components/stylesheets/compass/partials/_base.scss +12 -0
  41. data/lib/tennpipes-init/generators/components/stylesheets/less.rb +25 -0
  42. data/lib/tennpipes-init/generators/components/stylesheets/sass.rb +15 -0
  43. data/lib/tennpipes-init/generators/components/stylesheets/scss.rb +16 -0
  44. data/lib/tennpipes-init/generators/components/tests/bacon.rb +103 -0
  45. data/lib/tennpipes-init/generators/components/tests/cucumber.rb +86 -0
  46. data/lib/tennpipes-init/generators/components/tests/minitest.rb +110 -0
  47. data/lib/tennpipes-init/generators/components/tests/riot.rb +117 -0
  48. data/lib/tennpipes-init/generators/components/tests/rspec.rb +111 -0
  49. data/lib/tennpipes-init/generators/components/tests/shoulda.rb +114 -0
  50. data/lib/tennpipes-init/generators/components/tests/steak.rb +114 -0
  51. data/lib/tennpipes-init/generators/controller.rb +77 -0
  52. data/lib/tennpipes-init/generators/helper.rb +50 -0
  53. data/lib/tennpipes-init/generators/mailer.rb +52 -0
  54. data/lib/tennpipes-init/generators/migration.rb +43 -0
  55. data/lib/tennpipes-init/generators/model.rb +113 -0
  56. data/lib/tennpipes-init/generators/plugin.rb +67 -0
  57. data/lib/tennpipes-init/generators/project.rb +160 -0
  58. data/lib/tennpipes-init/generators/project/config.ru +9 -0
  59. data/lib/tennpipes-init/generators/project/config/apps.rb.tt +35 -0
  60. data/lib/tennpipes-init/generators/project/config/boot.rb +49 -0
  61. data/lib/tennpipes-init/generators/project/public/favicon.ico +0 -0
  62. data/lib/tennpipes-init/generators/project/public/images/booking.com.png +0 -0
  63. data/lib/tennpipes-init/generators/project/public/images/causes.png +0 -0
  64. data/lib/tennpipes-init/generators/project/public/images/ennkeypee_bg.jpg +0 -0
  65. data/lib/tennpipes-init/generators/project/public/images/ennkeypee_bluelogo.png +0 -0
  66. data/lib/tennpipes-init/generators/project/public/images/ennkeypee_bluelogo.svg +68 -0
  67. data/lib/tennpipes-init/generators/project/public/images/ennkeypee_whitelogo.png +0 -0
  68. data/lib/tennpipes-init/generators/project/public/images/ennkeypee_whitelogo.svg +65 -0
  69. data/lib/tennpipes-init/generators/project/public/images/forever21.png +0 -0
  70. data/lib/tennpipes-init/generators/project/public/images/icons/foundation-icons.eot +0 -0
  71. data/lib/tennpipes-init/generators/project/public/images/icons/foundation-icons.svg +970 -0
  72. data/lib/tennpipes-init/generators/project/public/images/icons/foundation-icons.ttf +0 -0
  73. data/lib/tennpipes-init/generators/project/public/images/icons/foundation-icons.woff +0 -0
  74. data/lib/tennpipes-init/generators/project/public/images/icons/tennpipes-icons.css +598 -0
  75. data/lib/tennpipes-init/generators/project/public/images/image1.jpg +0 -0
  76. data/lib/tennpipes-init/generators/project/public/images/image11.jpg +0 -0
  77. data/lib/tennpipes-init/generators/project/public/images/image2.jpg +0 -0
  78. data/lib/tennpipes-init/generators/project/public/images/image3.jpg +0 -0
  79. data/lib/tennpipes-init/generators/project/public/images/intuit.png +0 -0
  80. data/lib/tennpipes-init/generators/project/public/images/krispykreme.png +0 -0
  81. data/lib/tennpipes-init/generators/project/public/images/placeholders/README.md +302 -0
  82. data/lib/tennpipes-init/generators/project/public/images/placeholders/bower.json +4 -0
  83. data/lib/tennpipes-init/generators/project/public/images/placeholders/composer.json +34 -0
  84. data/lib/tennpipes-init/generators/project/public/images/placeholders/gulpfile.js +92 -0
  85. data/lib/tennpipes-init/generators/project/public/images/placeholders/holder.js +1920 -0
  86. data/lib/tennpipes-init/generators/project/public/images/placeholders/holder.min.js +12 -0
  87. data/lib/tennpipes-init/generators/project/public/images/placeholders/package.json +46 -0
  88. data/lib/tennpipes-init/generators/project/public/images/placeholders/src/holder.js +1411 -0
  89. data/lib/tennpipes-init/generators/project/public/images/placeholders/src/lib/augment.js +27 -0
  90. data/lib/tennpipes-init/generators/project/public/images/placeholders/src/lib/ondomready.js +155 -0
  91. data/lib/tennpipes-init/generators/project/public/images/placeholders/src/lib/polyfills.js +177 -0
  92. data/lib/tennpipes-init/generators/project/public/images/placeholders/src/scenegraph.js +101 -0
  93. data/lib/tennpipes-init/generators/project/public/images/placeholders/src/utils.js +129 -0
  94. data/lib/tennpipes-init/generators/project/public/images/priceline.com.png +0 -0
  95. data/lib/tennpipes-init/generators/project/public/images/stripe.png +0 -0
  96. data/lib/tennpipes-init/generators/project/public/javascripts/tennpipes.min.js +6081 -0
  97. data/lib/tennpipes-init/generators/project/public/javascripts/tennpipes/tennpipes.abide.js +340 -0
  98. data/lib/tennpipes-init/generators/project/public/javascripts/tennpipes/tennpipes.accordion.js +67 -0
  99. data/lib/tennpipes-init/generators/project/public/javascripts/tennpipes/tennpipes.alert.js +43 -0
  100. data/lib/tennpipes-init/generators/project/public/javascripts/tennpipes/tennpipes.clearing.js +556 -0
  101. data/lib/tennpipes-init/generators/project/public/javascripts/tennpipes/tennpipes.dropdown.js +448 -0
  102. data/lib/tennpipes-init/generators/project/public/javascripts/tennpipes/tennpipes.equalizer.js +77 -0
  103. data/lib/tennpipes-init/generators/project/public/javascripts/tennpipes/tennpipes.interchange.js +354 -0
  104. data/lib/tennpipes-init/generators/project/public/javascripts/tennpipes/tennpipes.joyride.js +932 -0
  105. data/lib/tennpipes-init/generators/project/public/javascripts/tennpipes/tennpipes.js +703 -0
  106. data/lib/tennpipes-init/generators/project/public/javascripts/tennpipes/tennpipes.magellan.js +203 -0
  107. data/lib/tennpipes-init/generators/project/public/javascripts/tennpipes/tennpipes.offcanvas.js +152 -0
  108. data/lib/tennpipes-init/generators/project/public/javascripts/tennpipes/tennpipes.orbit.js +476 -0
  109. data/lib/tennpipes-init/generators/project/public/javascripts/tennpipes/tennpipes.reveal.js +471 -0
  110. data/lib/tennpipes-init/generators/project/public/javascripts/tennpipes/tennpipes.slider.js +263 -0
  111. data/lib/tennpipes-init/generators/project/public/javascripts/tennpipes/tennpipes.tab.js +237 -0
  112. data/lib/tennpipes-init/generators/project/public/javascripts/tennpipes/tennpipes.tooltip.js +307 -0
  113. data/lib/tennpipes-init/generators/project/public/javascripts/tennpipes/tennpipes.topbar.js +452 -0
  114. data/lib/tennpipes-init/generators/project/public/javascripts/vendor/fastclick.js +8 -0
  115. data/lib/tennpipes-init/generators/project/public/javascripts/vendor/jquery.cookie.js +8 -0
  116. data/lib/tennpipes-init/generators/project/public/javascripts/vendor/jquery.js +26 -0
  117. data/lib/tennpipes-init/generators/project/public/javascripts/vendor/modernizr.js +8 -0
  118. data/lib/tennpipes-init/generators/project/public/javascripts/vendor/placeholder.js +2 -0
  119. data/lib/tennpipes-init/generators/project/public/stylesheets/app.css~ +178 -0
  120. data/lib/tennpipes-init/generators/project/public/stylesheets/app1.css~ +177 -0
  121. data/lib/tennpipes-init/generators/project/public/stylesheets/ennkeypee.css +214 -0
  122. data/lib/tennpipes-init/generators/project/public/stylesheets/ennkeypee.css~ +214 -0
  123. data/lib/tennpipes-init/generators/project/public/stylesheets/normalize.css +427 -0
  124. data/lib/tennpipes-init/generators/project/public/stylesheets/tennpipes.css +6201 -0
  125. data/lib/tennpipes-init/generators/project/public/stylesheets/tennpipes.css~ +6201 -0
  126. data/lib/tennpipes-init/generators/project/public/stylesheets/tennpipes.min.css +1 -0
  127. data/lib/tennpipes-init/generators/runner.rb +139 -0
  128. data/lib/tennpipes-init/generators/task.rb +45 -0
  129. data/lib/tennpipes-init/generators/templates/Gemfile.tt +32 -0
  130. data/lib/tennpipes-init/generators/templates/Rakefile.tt +8 -0
  131. data/lib/tennpipes-init/generators/templates/controller.rb.tt +22 -0
  132. data/lib/tennpipes-init/generators/templates/gem/README.md.tt +29 -0
  133. data/lib/tennpipes-init/generators/templates/gem/gemspec.tt +19 -0
  134. data/lib/tennpipes-init/generators/templates/gem/lib/libname.tt +6 -0
  135. data/lib/tennpipes-init/generators/templates/gem/lib/libname/version.tt +3 -0
  136. data/lib/tennpipes-init/generators/templates/helper.rb.tt +13 -0
  137. data/lib/tennpipes-init/generators/templates/initializer.rb.tt +5 -0
  138. data/lib/tennpipes-init/generators/templates/mailer.rb.tt +54 -0
  139. data/lib/tennpipes-init/generators/templates/project_bin.tt +14 -0
  140. data/lib/tennpipes-init/generators/templates/task.rb.tt +7 -0
  141. data/lib/tennpipes-init/tennpipes-tasks/activerecord.rb +377 -0
  142. data/lib/tennpipes-init/tennpipes-tasks/database.rb +12 -0
  143. data/lib/tennpipes-init/tennpipes-tasks/datamapper.rb +94 -0
  144. data/lib/tennpipes-init/tennpipes-tasks/minirecord.rb +19 -0
  145. data/lib/tennpipes-init/tennpipes-tasks/mongoid.rb +215 -0
  146. data/lib/tennpipes-init/tennpipes-tasks/mongomapper.rb +55 -0
  147. data/lib/tennpipes-init/tennpipes-tasks/sequel.rb +85 -0
  148. data/lib/tennpipes-init/tennpipes-tasks/sql-helpers.rb +72 -0
  149. data/test/fixtures/admin_template.rb +7 -0
  150. data/test/fixtures/example_template.rb +15 -0
  151. data/test/fixtures/git_template.rb +4 -0
  152. data/test/fixtures/plugin_template.rb +13 -0
  153. data/test/fixtures/rake_template.rb +9 -0
  154. data/test/helper.rb +103 -0
  155. data/test/test_app_generator.rb +142 -0
  156. data/test/test_cli.rb +27 -0
  157. data/test/test_component_generator.rb +98 -0
  158. data/test/test_controller_generator.rb +272 -0
  159. data/test/test_generator.rb +13 -0
  160. data/test/test_helper_generator.rb +133 -0
  161. data/test/test_mailer_generator.rb +69 -0
  162. data/test/test_migration_generator.rb +222 -0
  163. data/test/test_model_generator.rb +553 -0
  164. data/test/test_plugin_generator.rb +152 -0
  165. data/test/test_project_generator.rb +757 -0
  166. data/test/test_task_generator.rb +53 -0
  167. metadata +285 -0
@@ -0,0 +1,12 @@
1
+ has_seeds = File.file?('db/seeds.rb')
2
+ if TennpipesTasks.load?(:database, has_seeds)
3
+ namespace :db do
4
+ desc 'Load the seed data from db/seeds.rb'
5
+ task :seed => :environment do
6
+ seed_file = Tennpipes.root('db', 'seeds.rb')
7
+ load(seed_file) if File.exist?(seed_file)
8
+ end
9
+ end
10
+
11
+ task :seed => 'db:seed'
12
+ end
@@ -0,0 +1,94 @@
1
+ if TennpipesTasks.load?(:datamapper, defined?(DataMapper))
2
+ namespace :dm do
3
+ namespace :auto do
4
+ desc "Perform auto migration (reset your db data)"
5
+ task :migrate => :environment do
6
+ ::DataMapper.repository.auto_migrate!
7
+ puts "<= dm:auto:migrate executed"
8
+ end
9
+
10
+ desc "Perform non destructive auto migration"
11
+ task :upgrade => :environment do
12
+ ::DataMapper.repository.auto_upgrade!
13
+ puts "<= dm:auto:upgrade executed"
14
+ end
15
+ end
16
+
17
+ namespace :migrate do
18
+ task :load => :environment do
19
+ require 'dm-migrations/migration_runner'
20
+ FileList["db/migrate/*.rb"].each do |migration|
21
+ load migration
22
+ end
23
+ end
24
+
25
+ desc "Migrate up using migrations"
26
+ task :up, [:version] => :load do |t, args|
27
+ version = args[:version] || env_migration_version
28
+ migrate_up!(version)
29
+ puts "<= dm:migrate:up #{version} executed"
30
+ end
31
+
32
+ desc "Migrate down using migrations"
33
+ task :down, [:version] => :load do |t, args|
34
+ version = args[:version] || env_migration_version
35
+ migrate_down!(version)
36
+ puts "<= dm:migrate:down #{version} executed"
37
+ end
38
+ end
39
+
40
+ desc "Migrate the database to the latest version"
41
+ task :migrate do
42
+ migrate_task = if Dir['db/migrate/*.rb'].empty?
43
+ 'dm:auto:upgrade'
44
+ else
45
+ 'dm:migrate:up'
46
+ end
47
+
48
+ Rake::Task[migrate_task].invoke
49
+ end
50
+
51
+ desc "Create the database"
52
+ task :create => :environment do
53
+ config = DataMapper.repository.adapter.options.symbolize_keys
54
+ adapter = config[:adapter]
55
+ user, password, host = config[:user], config[:password], config[:host]
56
+
57
+ database = config[:database] || config[:path]
58
+ database.sub!(/^\//,'') unless adapter.start_with?('sqlite')
59
+
60
+ charset = config[:charset] || ENV['CHARSET'] || 'utf8'
61
+ collation = config[:collation] || ENV['COLLATION'] || 'utf8_unicode_ci'
62
+
63
+ puts "=> Creating database '#{database}'"
64
+ Tennpipes::Generators::SqlHelpers.create_db(adapter, user, password, host, database, charset, collation)
65
+ puts "<= dm:create executed"
66
+ end
67
+
68
+ desc "Drop the database (postgres and mysql only)"
69
+ task :drop => :environment do
70
+ config = DataMapper.repository.adapter.options.symbolize_keys
71
+ adapter = config[:adapter]
72
+ user, password, host = config[:user], config[:password], config[:host]
73
+
74
+ database = config[:database] || config[:path]
75
+ database.sub!(/^\//,'') unless adapter.start_with?('sqlite')
76
+
77
+ puts "=> Dropping database '#{database}'"
78
+ Tennpipes::Generators::SqlHelpers.drop_db(adapter, user, password, host, database)
79
+ puts "<= dm:drop executed"
80
+ end
81
+
82
+ desc "Drop the database, migrate from scratch and initialize with the seed data"
83
+ task :reset => [:drop, :setup]
84
+
85
+ desc "Create the database migrate and initialize with the seed data"
86
+ task :setup => [:create, :migrate, :seed]
87
+ end
88
+
89
+ task 'db:migrate' => 'dm:migrate'
90
+ task 'db:create' => 'dm:create'
91
+ task 'db:drop' => 'dm:drop'
92
+ task 'db:reset' => 'dm:reset'
93
+ task 'db:setup' => 'dm:setup'
94
+ end
@@ -0,0 +1,19 @@
1
+ if TennpipesTasks.load?(:minirecord, defined?(MiniRecord))
2
+ namespace :mr do
3
+ desc 'Auto migration of database'
4
+ task :migrate => :environment do
5
+ Dir["models/*.rb"].each do |file_path|
6
+ basename = File.basename(file_path, File.extname(file_path))
7
+ clazz = basename.camelize.constantize
8
+ clazz.auto_upgrade! if clazz.ancestors.include?(ActiveRecord::Base)
9
+ end
10
+ puts "<= mr:migrate executed"
11
+ end
12
+ end
13
+
14
+ task 'db:migrate' => 'mr:migrate'
15
+ # task 'db:create' => 'mr:create'
16
+ # task 'db:drop' => 'mr:drop'
17
+ # task 'db:reset' => 'mr:reset'
18
+ # task 'db:setup' => 'mr:setup'
19
+ end
@@ -0,0 +1,215 @@
1
+ if TennpipesTasks.load?(:mongoid, defined?(Mongoid))
2
+ require 'mongoid'
3
+
4
+ namespace :mi do
5
+
6
+ if Mongoid::VERSION =~ /^[012]\./
7
+ # Mongoid 2 API
8
+ def mongoid_collections
9
+ Mongoid.master.collections
10
+ end
11
+
12
+ def mongoid_collection(name)
13
+ Mongoid.master.collection(name)
14
+ end
15
+
16
+ def mongoid_new_collection(collection, name)
17
+ collection.db.collection(name)
18
+ end
19
+
20
+ def enum_mongoid_documents(collection)
21
+ collection.find({}, :timeout => false, :sort => "_id") do |cursor|
22
+ cursor.each do |doc|
23
+ yield doc
24
+ end
25
+ end
26
+ end
27
+
28
+ def rename_mongoid_collection(collection, new_name)
29
+ collection.rename(new_name)
30
+ end
31
+ else
32
+ # Mongoid 3+ API
33
+ def mongoid_collections
34
+ Mongoid.default_session.collections
35
+ end
36
+
37
+ def mongoid_collection(name)
38
+ Mongoid.default_session[name]
39
+ end
40
+
41
+ def mongoid_new_collection(collection, name)
42
+ Mongoid.default_session[name]
43
+ end
44
+
45
+ def enum_mongoid_documents(collection)
46
+ collection.find.sort(:_id => 1).each do |doc|
47
+ yield doc
48
+ end
49
+ end
50
+
51
+ def rename_mongoid_collection(collection, new_name)
52
+ db_name = collection.database.name
53
+ collection.database.session.with(:database => :admin) do |admin|
54
+ admin.command(
55
+ :renameCollection => "#{db_name}.#{collection.name}",
56
+ :to => "#{db_name}.#{new_name}",
57
+ :dropTarget => true)
58
+ end
59
+ end
60
+ end
61
+
62
+ desc 'Drops all the collections for the database for the current Tennpipes.env'
63
+ task :drop => :environment do
64
+ mongoid_collections.select {|c| c.name !~ /system/ }.each(&:drop)
65
+ end
66
+
67
+ # Helper to retrieve a list of models.
68
+ def get_mongoid_models
69
+ documents = []
70
+ Dir['{app,.}/models/**/*.rb'].sort.each do |file|
71
+ model_path = file[0..-4].split('/')[2..-1]
72
+
73
+ begin
74
+ klass = model_path.map(&:classify).join('::').constantize
75
+ if klass.ancestors.include?(Mongoid::Document) && !klass.embedded
76
+ documents << klass
77
+ end
78
+ rescue => e
79
+ # Just for non-mongoid objects that don't have the embedded
80
+ # attribute at the class level.
81
+ end
82
+ end
83
+
84
+ documents
85
+ end
86
+
87
+ desc 'Create the indexes defined on your mongoid models'
88
+ task :create_indexes => :environment do
89
+ get_mongoid_models.each(&:create_indexes)
90
+ end
91
+
92
+ def convert_ids(obj)
93
+ if obj.is_a?(String) && obj =~ /^[a-f0-9]{24}$/
94
+ defined?(Moped) ? Moped::BSON::ObjectId.from_string(obj) : BSON::ObjectId(obj)
95
+ elsif obj.is_a?(Array)
96
+ obj.map do |v|
97
+ convert_ids(v)
98
+ end
99
+ elsif obj.is_a?(Hash)
100
+ obj.each do |k, v|
101
+ obj[k] = convert_ids(v)
102
+ end
103
+ else
104
+ obj
105
+ end
106
+ end
107
+
108
+ def collection_names
109
+ @collection_names ||= get_mongoid_models.map{ |d| d.collection.name }.uniq
110
+ end
111
+
112
+ desc "Convert string objectids in mongo database to ObjectID type"
113
+ task :objectid_convert => :environment do
114
+ collection_names.each do |collection_name|
115
+ puts "Converting #{collection_name} to use ObjectIDs"
116
+
117
+ # Get old collection.
118
+ collection = mongoid_collection(collection_name)
119
+
120
+ # Get new collection (a clean one).
121
+ mongoid_collection("#{collection_name}_new").drop
122
+ new_collection = mongoid_new_collection(collection, "#{collection_name}_new")
123
+
124
+ # Convert collection documents.
125
+ enum_mongoid_documents(collection) do |doc|
126
+ new_doc = convert_ids(doc)
127
+ new_collection.insert(new_doc, :safe => true)
128
+ end
129
+
130
+ puts "Done! Converted collection is in #{new_collection.name}\n\n"
131
+ end
132
+
133
+ # No errors. great! now rename _new to collection_name.
134
+ collection_names.each do |collection_name|
135
+ collection = mongoid_collection(collection_name)
136
+ new_collection = mongoid_new_collection(collection, "#{collection_name}_new")
137
+
138
+ # Swap collection to _old.
139
+ puts "Moving #{collection.name} to #{collection_name}_old"
140
+ mongoid_new_collection(collection, "#{collection_name}_old").drop
141
+
142
+ begin
143
+ rename_mongoid_collection(collection, "#{collection_name}_old")
144
+ rescue StandardError => e
145
+ puts "Unable to rename database #{collection_name} to #{collection_name}_old"
146
+ puts "reason: #{e.message}\n\n"
147
+ end
148
+
149
+ # Swap _new to collection.
150
+ puts "Moving #{new_collection.name} to #{collection_name}\n\n"
151
+
152
+ begin
153
+ rename_mongoid_collection(new_collection, collection_name)
154
+ rescue StandardError => e
155
+ puts "Unable to rename database #{new_collection.name} to #{collection_name}"
156
+ puts "reason: #{e.message}\n\n"
157
+ end
158
+ end
159
+
160
+ puts "DONE! Run `tennpipes rake mi:cleanup_old_collections` to remove old collections"
161
+ end
162
+
163
+ desc "Clean up old collections backed up by objectid_convert"
164
+ task :cleanup_old_collections => :environment do
165
+ collection_names.each do |collection_name|
166
+ collection = mongoid_collection(collection_name)
167
+ mongoid_new_collection(collection, "#{collection.name}_old").drop
168
+ end
169
+ end
170
+
171
+ desc "Generates .yml files for I18n translations"
172
+ task :translate => :environment do
173
+ models = Dir["#{Tennpipes.root}/{app,}/models/**/*.rb"].map { |m| File.basename(m, ".rb") }
174
+
175
+ models.each do |m|
176
+ # Get the model class.
177
+ klass = m.camelize.constantize
178
+
179
+ # Avoid non Mongoid models.
180
+ next unless klass.ancestors.include?(Mongoid::Document)
181
+
182
+ # Init the processing.
183
+ print "Processing #{m.humanize}: "
184
+ FileUtils.mkdir_p("#{Tennpipes.root}/app/locale/models/#{m}")
185
+ langs = Array(I18n.locale)
186
+
187
+ # Create models for it and en locales.
188
+ langs.each do |lang|
189
+ filename = "#{Tennpipes.root}/app/locale/models/#{m}/#{lang}.yml"
190
+ columns = klass.fields.values.map(&:name).reject { |name| name =~ /id/i }
191
+ # If the lang file already exist we need to check it.
192
+ if File.exist?(filename)
193
+ locale = File.open(filename).read
194
+ columns.each do |c|
195
+ locale += "\n #{c}: #{c.humanize}" unless locale.include?("#{c}:")
196
+ end
197
+ print "Lang #{lang.to_s.upcase} already exist ... "; $stdout.flush
198
+ else
199
+ locale = "#{lang}:" + "\n" +
200
+ " models:" + "\n" +
201
+ " #{m}:" + "\n" +
202
+ " name: #{klass.name}" + "\n" +
203
+ " attributes:" + "\n" +
204
+ columns.map { |c| " #{c}: #{c.humanize}" }.join("\n")
205
+ print "created a new for #{lang.to_s.upcase} Lang ... "; $stdout.flush
206
+ end
207
+ File.open(filename, "w") { |f| f.puts locale }
208
+ end
209
+ puts
210
+ end
211
+ end
212
+ end
213
+
214
+ task 'db:drop' => 'mi:drop'
215
+ end
@@ -0,0 +1,55 @@
1
+ if defined?(MongoMapper)
2
+ begin
3
+ require 'i18n'
4
+ rescue LoadError
5
+ # Only do this for I18n check later.
6
+ end
7
+
8
+ namespace :mm do
9
+ desc 'Drops all the collections for the database for the current Tennpipes.env'
10
+ task :drop => :environment do
11
+ MongoMapper.database.collections.select {|c| c.name !~ /system/ }.each(&:drop)
12
+ end
13
+
14
+ desc "Generates .yml files for I18n translations"
15
+ task :translate => :environment do
16
+ models = Dir["#{Tennpipes.root}/{app,}/models/**/*.rb"].map { |m| File.basename(m, ".rb") }
17
+
18
+ models.each do |m|
19
+ # Get the model class.
20
+ klass = m.camelize.constantize
21
+
22
+ # Init the processing
23
+ print "Processing #{m.humanize}: "
24
+ FileUtils.mkdir_p("#{Tennpipes.root}/app/locale/models/#{m}")
25
+ langs = Array(I18n.locale)
26
+
27
+ # Create models for it and en locales.
28
+ langs.each do |lang|
29
+ filename = "#{Tennpipes.root}/app/locale/models/#{m}/#{lang}.yml"
30
+ columns = klass.keys.values.map(&:name).reject { |name| name =~ /id/i }
31
+ # If the lang file already exist we need to check it
32
+ if File.exist?(filename)
33
+ locale = File.open(filename).read
34
+ columns.each do |c|
35
+ locale += "\n #{c}: #{c.humanize}" unless locale.include?("#{c}:")
36
+ end
37
+ print "Lang #{lang.to_s.upcase} already exist ... "; $stdout.flush
38
+ else
39
+ locale = "#{lang}:" + "\n" +
40
+ " models:" + "\n" +
41
+ " #{m}:" + "\n" +
42
+ " name: #{klass.human_name}" + "\n" +
43
+ " attributes:" + "\n" +
44
+ columns.map { |c| " #{c}: #{c.humanize}" }.join("\n")
45
+ print "created a new for #{lang.to_s.upcase} Lang ... "; $stdout.flush
46
+ end
47
+ File.open(filename, "w") { |f| f.puts locale }
48
+ end
49
+ puts
50
+ end
51
+ end
52
+ end
53
+
54
+ task 'db:drop' => 'mm:drop'
55
+ end
@@ -0,0 +1,85 @@
1
+ if TennpipesTasks.load?(:sequel, defined?(Sequel))
2
+ namespace :sq do
3
+ namespace :migrate do
4
+ desc "Perform automigration (reset your db data)"
5
+ task :auto => :skeleton do
6
+ ::Sequel.extension :migration
7
+ ::Sequel::Migrator.run Sequel::Model.db, "db/migrate", :target => 0
8
+ ::Sequel::Migrator.run Sequel::Model.db, "db/migrate"
9
+ puts "<= sq:migrate:auto executed"
10
+ end
11
+
12
+ desc "Perform migration up/down to MIGRATION_VERSION"
13
+ task :to, [:version] => :skeleton do |t, args|
14
+ version = (args[:version] || env_migration_version).to_s.strip
15
+ ::Sequel.extension :migration
16
+ fail "No MIGRATION_VERSION was provided" if version.empty?
17
+ ::Sequel::Migrator.apply(Sequel::Model.db, "db/migrate", version.to_i)
18
+ puts "<= sq:migrate:to[#{version}] executed"
19
+ end
20
+
21
+ desc "Perform migration up to latest migration available"
22
+ task :up => :skeleton do
23
+ ::Sequel.extension :migration
24
+ ::Sequel::Migrator.run Sequel::Model.db, "db/migrate"
25
+ puts "<= sq:migrate:up executed"
26
+ end
27
+
28
+ desc "Perform migration down (erase all data)"
29
+ task :down => :skeleton do
30
+ ::Sequel.extension :migration
31
+ ::Sequel::Migrator.run Sequel::Model.db, "db/migrate", :target => 0
32
+ puts "<= sq:migrate:down executed"
33
+ end
34
+ end
35
+
36
+ desc "Perform migration up to latest migration available"
37
+ task :migrate => 'sq:migrate:up'
38
+
39
+ desc "Create the database"
40
+ task :create => :skeleton do
41
+ config = Sequel::Model.db.opts
42
+ user, password, host = config[:user], config[:password], config[:host]
43
+ database = config[:database]
44
+ charset = config[:charset] || ENV['CHARSET'] || 'utf8'
45
+ collation = config[:collation] || ENV['COLLATION'] || 'utf8_unicode_ci'
46
+
47
+ puts "=> Creating database '#{database}'"
48
+ if config[:adapter] == 'sqlite3'
49
+ ::Sequel.sqlite(database)
50
+ else
51
+ require 'tennpipes-init/tennpipes-tasks/sql-helpers'
52
+ Tennpipes::Generators::SqlHelpers.create_db(config[:adapter], user, password, host, database, charset, collation)
53
+ end
54
+ puts "<= sq:create executed"
55
+ end
56
+
57
+ desc "Drop the database (postgres and mysql only)"
58
+ task :drop => :skeleton do
59
+ config = ::Sequel::Model.db.opts
60
+ user, password, host, database = config[:user], config[:password], config[:host], config[:database]
61
+
62
+ ::Sequel::Model.db.disconnect
63
+
64
+ puts "=> Dropping database '#{database}'"
65
+ if config[:adapter] == 'sqlite3'
66
+ File.delete(database) if File.exist?(database)
67
+ else
68
+ Tennpipes::Generators::SqlHelpers.drop_db(config[:adapter], user, password, host, database)
69
+ end
70
+ puts "<= sq:drop executed"
71
+ end
72
+
73
+ desc 'Drop the database, migrate from scratch and initialize with the seed data'
74
+ task :reset => ['drop', 'create', 'migrate', 'seed']
75
+
76
+ task :seed => :environment do
77
+ missing_model_features = Tennpipes.send(:default_dependency_paths) - Tennpipes.send(:dependency_paths)
78
+ Tennpipes.require_dependencies(missing_model_features)
79
+ Rake::Task['db:seed'].invoke
80
+ end
81
+ end
82
+
83
+ task 'db:migrate' => 'sq:migrate'
84
+ task 'db:reset' => 'sq:reset'
85
+ end