tennpipes-init 3.6.6

Sign up to get free protection for your applications and to get access to all the features.
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