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.
- checksums.yaml +7 -0
- data/LICENSE.txt +20 -0
- data/README.rdoc +163 -0
- data/Rakefile +1 -0
- data/bin/tennpipes-init +16 -0
- data/lib/tennpipes-init.rb +73 -0
- data/lib/tennpipes-init/command.rb +18 -0
- data/lib/tennpipes-init/generators/actions.rb +630 -0
- data/lib/tennpipes-init/generators/app.rb +75 -0
- data/lib/tennpipes-init/generators/app/app.rb.tt +72 -0
- data/lib/tennpipes-init/generators/app/app.rb.tt~ +72 -0
- data/lib/tennpipes-init/generators/cli.rb +57 -0
- data/lib/tennpipes-init/generators/component.rb +73 -0
- data/lib/tennpipes-init/generators/components/actions.rb +208 -0
- data/lib/tennpipes-init/generators/components/mocks/mocha.rb +10 -0
- data/lib/tennpipes-init/generators/components/mocks/rr.rb +13 -0
- data/lib/tennpipes-init/generators/components/orms/activerecord.rb +201 -0
- data/lib/tennpipes-init/generators/components/orms/couchrest.rb +55 -0
- data/lib/tennpipes-init/generators/components/orms/datamapper.rb +140 -0
- data/lib/tennpipes-init/generators/components/orms/dynamoid.rb +67 -0
- data/lib/tennpipes-init/generators/components/orms/minirecord.rb +165 -0
- data/lib/tennpipes-init/generators/components/orms/mongoid.rb +113 -0
- data/lib/tennpipes-init/generators/components/orms/mongomapper.rb +43 -0
- data/lib/tennpipes-init/generators/components/orms/mongomatic.rb +84 -0
- data/lib/tennpipes-init/generators/components/orms/ohm.rb +65 -0
- data/lib/tennpipes-init/generators/components/orms/ripple.rb +75 -0
- data/lib/tennpipes-init/generators/components/orms/sequel.rb +99 -0
- data/lib/tennpipes-init/generators/components/renderers/erb.rb +3 -0
- data/lib/tennpipes-init/generators/components/renderers/haml.rb +3 -0
- data/lib/tennpipes-init/generators/components/renderers/liquid.rb +4 -0
- data/lib/tennpipes-init/generators/components/renderers/slim.rb +3 -0
- data/lib/tennpipes-init/generators/components/scripts/dojo.rb +10 -0
- data/lib/tennpipes-init/generators/components/scripts/extcore.rb +10 -0
- data/lib/tennpipes-init/generators/components/scripts/jquery.rb +10 -0
- data/lib/tennpipes-init/generators/components/scripts/mootools.rb +10 -0
- data/lib/tennpipes-init/generators/components/scripts/prototype.rb +12 -0
- data/lib/tennpipes-init/generators/components/scripts/rightjs.rb +10 -0
- data/lib/tennpipes-init/generators/components/stylesheets/compass.rb +39 -0
- data/lib/tennpipes-init/generators/components/stylesheets/compass/application.scss +43 -0
- data/lib/tennpipes-init/generators/components/stylesheets/compass/partials/_base.scss +12 -0
- data/lib/tennpipes-init/generators/components/stylesheets/less.rb +25 -0
- data/lib/tennpipes-init/generators/components/stylesheets/sass.rb +15 -0
- data/lib/tennpipes-init/generators/components/stylesheets/scss.rb +16 -0
- data/lib/tennpipes-init/generators/components/tests/bacon.rb +103 -0
- data/lib/tennpipes-init/generators/components/tests/cucumber.rb +86 -0
- data/lib/tennpipes-init/generators/components/tests/minitest.rb +110 -0
- data/lib/tennpipes-init/generators/components/tests/riot.rb +117 -0
- data/lib/tennpipes-init/generators/components/tests/rspec.rb +111 -0
- data/lib/tennpipes-init/generators/components/tests/shoulda.rb +114 -0
- data/lib/tennpipes-init/generators/components/tests/steak.rb +114 -0
- data/lib/tennpipes-init/generators/controller.rb +77 -0
- data/lib/tennpipes-init/generators/helper.rb +50 -0
- data/lib/tennpipes-init/generators/mailer.rb +52 -0
- data/lib/tennpipes-init/generators/migration.rb +43 -0
- data/lib/tennpipes-init/generators/model.rb +113 -0
- data/lib/tennpipes-init/generators/plugin.rb +67 -0
- data/lib/tennpipes-init/generators/project.rb +160 -0
- data/lib/tennpipes-init/generators/project/config.ru +9 -0
- data/lib/tennpipes-init/generators/project/config/apps.rb.tt +35 -0
- data/lib/tennpipes-init/generators/project/config/boot.rb +49 -0
- data/lib/tennpipes-init/generators/project/public/favicon.ico +0 -0
- data/lib/tennpipes-init/generators/project/public/images/booking.com.png +0 -0
- data/lib/tennpipes-init/generators/project/public/images/causes.png +0 -0
- data/lib/tennpipes-init/generators/project/public/images/ennkeypee_bg.jpg +0 -0
- data/lib/tennpipes-init/generators/project/public/images/ennkeypee_bluelogo.png +0 -0
- data/lib/tennpipes-init/generators/project/public/images/ennkeypee_bluelogo.svg +68 -0
- data/lib/tennpipes-init/generators/project/public/images/ennkeypee_whitelogo.png +0 -0
- data/lib/tennpipes-init/generators/project/public/images/ennkeypee_whitelogo.svg +65 -0
- data/lib/tennpipes-init/generators/project/public/images/forever21.png +0 -0
- data/lib/tennpipes-init/generators/project/public/images/icons/foundation-icons.eot +0 -0
- data/lib/tennpipes-init/generators/project/public/images/icons/foundation-icons.svg +970 -0
- data/lib/tennpipes-init/generators/project/public/images/icons/foundation-icons.ttf +0 -0
- data/lib/tennpipes-init/generators/project/public/images/icons/foundation-icons.woff +0 -0
- data/lib/tennpipes-init/generators/project/public/images/icons/tennpipes-icons.css +598 -0
- data/lib/tennpipes-init/generators/project/public/images/image1.jpg +0 -0
- data/lib/tennpipes-init/generators/project/public/images/image11.jpg +0 -0
- data/lib/tennpipes-init/generators/project/public/images/image2.jpg +0 -0
- data/lib/tennpipes-init/generators/project/public/images/image3.jpg +0 -0
- data/lib/tennpipes-init/generators/project/public/images/intuit.png +0 -0
- data/lib/tennpipes-init/generators/project/public/images/krispykreme.png +0 -0
- data/lib/tennpipes-init/generators/project/public/images/placeholders/README.md +302 -0
- data/lib/tennpipes-init/generators/project/public/images/placeholders/bower.json +4 -0
- data/lib/tennpipes-init/generators/project/public/images/placeholders/composer.json +34 -0
- data/lib/tennpipes-init/generators/project/public/images/placeholders/gulpfile.js +92 -0
- data/lib/tennpipes-init/generators/project/public/images/placeholders/holder.js +1920 -0
- data/lib/tennpipes-init/generators/project/public/images/placeholders/holder.min.js +12 -0
- data/lib/tennpipes-init/generators/project/public/images/placeholders/package.json +46 -0
- data/lib/tennpipes-init/generators/project/public/images/placeholders/src/holder.js +1411 -0
- data/lib/tennpipes-init/generators/project/public/images/placeholders/src/lib/augment.js +27 -0
- data/lib/tennpipes-init/generators/project/public/images/placeholders/src/lib/ondomready.js +155 -0
- data/lib/tennpipes-init/generators/project/public/images/placeholders/src/lib/polyfills.js +177 -0
- data/lib/tennpipes-init/generators/project/public/images/placeholders/src/scenegraph.js +101 -0
- data/lib/tennpipes-init/generators/project/public/images/placeholders/src/utils.js +129 -0
- data/lib/tennpipes-init/generators/project/public/images/priceline.com.png +0 -0
- data/lib/tennpipes-init/generators/project/public/images/stripe.png +0 -0
- data/lib/tennpipes-init/generators/project/public/javascripts/tennpipes.min.js +6081 -0
- data/lib/tennpipes-init/generators/project/public/javascripts/tennpipes/tennpipes.abide.js +340 -0
- data/lib/tennpipes-init/generators/project/public/javascripts/tennpipes/tennpipes.accordion.js +67 -0
- data/lib/tennpipes-init/generators/project/public/javascripts/tennpipes/tennpipes.alert.js +43 -0
- data/lib/tennpipes-init/generators/project/public/javascripts/tennpipes/tennpipes.clearing.js +556 -0
- data/lib/tennpipes-init/generators/project/public/javascripts/tennpipes/tennpipes.dropdown.js +448 -0
- data/lib/tennpipes-init/generators/project/public/javascripts/tennpipes/tennpipes.equalizer.js +77 -0
- data/lib/tennpipes-init/generators/project/public/javascripts/tennpipes/tennpipes.interchange.js +354 -0
- data/lib/tennpipes-init/generators/project/public/javascripts/tennpipes/tennpipes.joyride.js +932 -0
- data/lib/tennpipes-init/generators/project/public/javascripts/tennpipes/tennpipes.js +703 -0
- data/lib/tennpipes-init/generators/project/public/javascripts/tennpipes/tennpipes.magellan.js +203 -0
- data/lib/tennpipes-init/generators/project/public/javascripts/tennpipes/tennpipes.offcanvas.js +152 -0
- data/lib/tennpipes-init/generators/project/public/javascripts/tennpipes/tennpipes.orbit.js +476 -0
- data/lib/tennpipes-init/generators/project/public/javascripts/tennpipes/tennpipes.reveal.js +471 -0
- data/lib/tennpipes-init/generators/project/public/javascripts/tennpipes/tennpipes.slider.js +263 -0
- data/lib/tennpipes-init/generators/project/public/javascripts/tennpipes/tennpipes.tab.js +237 -0
- data/lib/tennpipes-init/generators/project/public/javascripts/tennpipes/tennpipes.tooltip.js +307 -0
- data/lib/tennpipes-init/generators/project/public/javascripts/tennpipes/tennpipes.topbar.js +452 -0
- data/lib/tennpipes-init/generators/project/public/javascripts/vendor/fastclick.js +8 -0
- data/lib/tennpipes-init/generators/project/public/javascripts/vendor/jquery.cookie.js +8 -0
- data/lib/tennpipes-init/generators/project/public/javascripts/vendor/jquery.js +26 -0
- data/lib/tennpipes-init/generators/project/public/javascripts/vendor/modernizr.js +8 -0
- data/lib/tennpipes-init/generators/project/public/javascripts/vendor/placeholder.js +2 -0
- data/lib/tennpipes-init/generators/project/public/stylesheets/app.css~ +178 -0
- data/lib/tennpipes-init/generators/project/public/stylesheets/app1.css~ +177 -0
- data/lib/tennpipes-init/generators/project/public/stylesheets/ennkeypee.css +214 -0
- data/lib/tennpipes-init/generators/project/public/stylesheets/ennkeypee.css~ +214 -0
- data/lib/tennpipes-init/generators/project/public/stylesheets/normalize.css +427 -0
- data/lib/tennpipes-init/generators/project/public/stylesheets/tennpipes.css +6201 -0
- data/lib/tennpipes-init/generators/project/public/stylesheets/tennpipes.css~ +6201 -0
- data/lib/tennpipes-init/generators/project/public/stylesheets/tennpipes.min.css +1 -0
- data/lib/tennpipes-init/generators/runner.rb +139 -0
- data/lib/tennpipes-init/generators/task.rb +45 -0
- data/lib/tennpipes-init/generators/templates/Gemfile.tt +32 -0
- data/lib/tennpipes-init/generators/templates/Rakefile.tt +8 -0
- data/lib/tennpipes-init/generators/templates/controller.rb.tt +22 -0
- data/lib/tennpipes-init/generators/templates/gem/README.md.tt +29 -0
- data/lib/tennpipes-init/generators/templates/gem/gemspec.tt +19 -0
- data/lib/tennpipes-init/generators/templates/gem/lib/libname.tt +6 -0
- data/lib/tennpipes-init/generators/templates/gem/lib/libname/version.tt +3 -0
- data/lib/tennpipes-init/generators/templates/helper.rb.tt +13 -0
- data/lib/tennpipes-init/generators/templates/initializer.rb.tt +5 -0
- data/lib/tennpipes-init/generators/templates/mailer.rb.tt +54 -0
- data/lib/tennpipes-init/generators/templates/project_bin.tt +14 -0
- data/lib/tennpipes-init/generators/templates/task.rb.tt +7 -0
- data/lib/tennpipes-init/tennpipes-tasks/activerecord.rb +377 -0
- data/lib/tennpipes-init/tennpipes-tasks/database.rb +12 -0
- data/lib/tennpipes-init/tennpipes-tasks/datamapper.rb +94 -0
- data/lib/tennpipes-init/tennpipes-tasks/minirecord.rb +19 -0
- data/lib/tennpipes-init/tennpipes-tasks/mongoid.rb +215 -0
- data/lib/tennpipes-init/tennpipes-tasks/mongomapper.rb +55 -0
- data/lib/tennpipes-init/tennpipes-tasks/sequel.rb +85 -0
- data/lib/tennpipes-init/tennpipes-tasks/sql-helpers.rb +72 -0
- data/test/fixtures/admin_template.rb +7 -0
- data/test/fixtures/example_template.rb +15 -0
- data/test/fixtures/git_template.rb +4 -0
- data/test/fixtures/plugin_template.rb +13 -0
- data/test/fixtures/rake_template.rb +9 -0
- data/test/helper.rb +103 -0
- data/test/test_app_generator.rb +142 -0
- data/test/test_cli.rb +27 -0
- data/test/test_component_generator.rb +98 -0
- data/test/test_controller_generator.rb +272 -0
- data/test/test_generator.rb +13 -0
- data/test/test_helper_generator.rb +133 -0
- data/test/test_mailer_generator.rb +69 -0
- data/test/test_migration_generator.rb +222 -0
- data/test/test_model_generator.rb +553 -0
- data/test/test_plugin_generator.rb +152 -0
- data/test/test_project_generator.rb +757 -0
- data/test/test_task_generator.rb +53 -0
- 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
|