merb-admin 0.8.1 → 0.8.3
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +29 -27
- data/Gemfile +24 -22
- data/Gemfile.lock +86 -0
- data/LICENSE +20 -20
- data/README.rdoc +54 -58
- data/Rakefile +11 -44
- data/app/controllers/application.rb +6 -6
- data/app/controllers/main.rb +191 -191
- data/app/helpers/application_helper.rb +64 -64
- data/app/helpers/main_helper.rb +167 -167
- data/app/models/.gitkeep +0 -0
- data/app/views/layout/_message.html.erb +10 -10
- data/app/views/layout/dashboard.html.erb +34 -34
- data/app/views/layout/form.html.erb +48 -48
- data/app/views/layout/list.html.erb +42 -42
- data/app/views/main/_belongs_to.html.erb +29 -29
- data/app/views/main/_big_decimal.html.erb +12 -12
- data/app/views/main/_boolean.html.erb +7 -7
- data/app/views/main/_date.html.erb +12 -12
- data/app/views/main/_datetime.html.erb +12 -12
- data/app/views/main/_float.html.erb +12 -12
- data/app/views/main/_has_many.html.erb +16 -16
- data/app/views/main/_has_one.html.erb +30 -30
- data/app/views/main/_integer.html.erb +12 -12
- data/app/views/main/_properties.html.erb +18 -18
- data/app/views/main/_string.html.erb +15 -15
- data/app/views/main/_text.html.erb +11 -11
- data/app/views/main/_time.html.erb +12 -12
- data/app/views/main/_timestamp.html.erb +12 -12
- data/app/views/main/delete.html.erb +28 -28
- data/app/views/main/edit.html.erb +19 -19
- data/app/views/main/index.html.erb +22 -22
- data/app/views/main/list.html.erb +93 -93
- data/app/views/main/new.html.erb +16 -16
- data/config/init.rb +30 -0
- data/config/router.rb +4 -0
- data/lib/abstract_model.rb +84 -86
- data/lib/active_record_support.rb +147 -147
- data/lib/datamapper_support.rb +139 -140
- data/lib/generic_support.rb +13 -13
- data/lib/merb-admin.rb +99 -99
- data/lib/merb-admin/merbtasks.rb +103 -103
- data/lib/merb-admin/slicetasks.rb +174 -174
- data/lib/merb-admin/spectasks.rb +55 -55
- data/lib/merb-admin/version.rb +3 -0
- data/lib/sequel_support.rb +275 -275
- data/merb-admin.gemspec +42 -232
- data/public/javascripts/CollapsedFieldsets.js +85 -85
- data/public/javascripts/DateTimeShortcuts.js +255 -255
- data/public/javascripts/RelatedObjectLookups.js +96 -96
- data/public/javascripts/SelectBox.js +111 -111
- data/public/javascripts/SelectFilter2.js +113 -113
- data/public/javascripts/actions.js +39 -39
- data/public/javascripts/calendar.js +143 -143
- data/public/javascripts/core.js +176 -176
- data/public/javascripts/dateparse.js +233 -233
- data/public/javascripts/getElementsBySelector.js +167 -167
- data/public/javascripts/i18n.js +33 -33
- data/public/javascripts/ordering.js +137 -137
- data/public/javascripts/timeparse.js +94 -94
- data/public/javascripts/urlify.js +140 -140
- data/public/stylesheets/base.css +746 -746
- data/public/stylesheets/changelists.css +269 -269
- data/public/stylesheets/dashboard.css +24 -24
- data/public/stylesheets/forms.css +327 -327
- data/public/stylesheets/global.css +142 -142
- data/public/stylesheets/ie.css +50 -50
- data/public/stylesheets/layout.css +29 -29
- data/public/stylesheets/login.css +54 -54
- data/public/stylesheets/master.css +1 -1
- data/public/stylesheets/patch-iewin.css +7 -7
- data/public/stylesheets/rtl.css +206 -206
- data/public/stylesheets/widgets.css +506 -506
- data/screenshots/create.png +0 -0
- data/screenshots/delete.png +0 -0
- data/screenshots/edit.png +0 -0
- data/screenshots/index.png +0 -0
- data/screenshots/list.png +0 -0
- data/screenshots/new.png +0 -0
- data/spec/controllers/main_spec.rb +25 -25
- data/spec/migrations/activerecord/001_create_divisions_migration.rb +13 -13
- data/spec/migrations/activerecord/002_create_drafts_migration.rb +19 -19
- data/spec/migrations/activerecord/003_create_leagues_migration.rb +12 -12
- data/spec/migrations/activerecord/004_create_players_migration.rb +19 -20
- data/spec/migrations/activerecord/005_create_teams_migration.rb +22 -22
- data/spec/migrations/sequel/001_create_divisions_migration.rb +15 -15
- data/spec/migrations/sequel/002_create_drafts_migration.rb +21 -21
- data/spec/migrations/sequel/003_create_leagues_migration.rb +14 -14
- data/spec/migrations/sequel/004_create_players_migration.rb +21 -22
- data/spec/migrations/sequel/005_create_teams_migration.rb +24 -24
- data/spec/models/activerecord/division.rb +7 -7
- data/spec/models/activerecord/draft.rb +11 -11
- data/spec/models/activerecord/league.rb +6 -6
- data/spec/models/activerecord/player.rb +8 -8
- data/spec/models/activerecord/team.rb +13 -13
- data/spec/models/datamapper/division.rb +12 -12
- data/spec/models/datamapper/draft.rb +18 -18
- data/spec/models/datamapper/league.rb +11 -11
- data/spec/models/datamapper/player.rb +20 -21
- data/spec/models/datamapper/team.rb +22 -22
- data/spec/models/sequel/division.rb +15 -15
- data/spec/models/sequel/draft.rb +19 -19
- data/spec/models/sequel/league.rb +14 -14
- data/spec/models/sequel/player.rb +18 -18
- data/spec/models/sequel/team.rb +21 -21
- data/spec/requests/main_spec.rb +763 -763
- data/spec/spec_helper.rb +113 -112
- metadata +247 -41
- data/VERSION +0 -1
data/lib/merb-admin/merbtasks.rb
CHANGED
@@ -1,103 +1,103 @@
|
|
1
|
-
namespace :slices do
|
2
|
-
namespace :"merb-admin" do
|
3
|
-
|
4
|
-
desc "Install MerbAdmin"
|
5
|
-
task :install => [:preflight, :setup_directories, :copy_assets, :migrate]
|
6
|
-
|
7
|
-
desc "Test for any dependencies"
|
8
|
-
task :preflight do # see slicetasks.rb
|
9
|
-
end
|
10
|
-
|
11
|
-
desc "Setup directories"
|
12
|
-
task :setup_directories do
|
13
|
-
puts "Creating directories for host application"
|
14
|
-
MerbAdmin.mirrored_components.each do |type|
|
15
|
-
if File.directory?(MerbAdmin.dir_for(type))
|
16
|
-
if !File.directory?(dst_path = MerbAdmin.app_dir_for(type))
|
17
|
-
relative_path = dst_path.relative_path_from(Merb.root)
|
18
|
-
puts "- creating directory :#{type} #{File.basename(Merb.root) / relative_path}"
|
19
|
-
mkdir_p(dst_path)
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
24
|
-
|
25
|
-
# desc "Copy stub files to host application"
|
26
|
-
# task :stubs do
|
27
|
-
# puts "Copying stubs for MerbAdmin - resolves any collisions"
|
28
|
-
# copied, preserved = MerbAdmin.mirror_stubs!
|
29
|
-
# puts "- no files to copy" if copied.empty? && preserved.empty?
|
30
|
-
# copied.each { |f| puts "- copied #{f}" }
|
31
|
-
# preserved.each { |f| puts "! preserved override as #{f}" }
|
32
|
-
# end
|
33
|
-
|
34
|
-
# desc "Copy stub files and views to host application"
|
35
|
-
# task :patch => [ "stubs", "freeze:views" ]
|
36
|
-
|
37
|
-
desc "Copy public assets to host application"
|
38
|
-
task :copy_assets do
|
39
|
-
puts "Copying assets for MerbAdmin - resolves any collisions"
|
40
|
-
copied, preserved = MerbAdmin.mirror_public!
|
41
|
-
puts "- no files to copy" if copied.empty? && preserved.empty?
|
42
|
-
copied.each { |f| puts "- copied #{f}" }
|
43
|
-
preserved.each { |f| puts "! preserved override as #{f}" }
|
44
|
-
end
|
45
|
-
|
46
|
-
desc "Migrate the database"
|
47
|
-
task :migrate do # see slicetasks.rb
|
48
|
-
end
|
49
|
-
|
50
|
-
desc "Freeze MerbAdmin into your app (only merb-admin/app)"
|
51
|
-
task :freeze => [ "freeze:app" ]
|
52
|
-
|
53
|
-
namespace :freeze do
|
54
|
-
|
55
|
-
# desc "Freezes MerbAdmin by installing the gem into application/gems"
|
56
|
-
# task :gem do
|
57
|
-
# ENV["GEM"] ||= "merb-admin"
|
58
|
-
# Rake::Task['slices:install_as_gem'].invoke
|
59
|
-
# end
|
60
|
-
|
61
|
-
desc "Freezes MerbAdmin by copying all files from merb-admin/app to your application"
|
62
|
-
task :app do
|
63
|
-
puts "Copying all merb-admin/app files to your application - resolves any collisions"
|
64
|
-
copied, preserved = MerbAdmin.mirror_app!
|
65
|
-
puts "- no files to copy" if copied.empty? && preserved.empty?
|
66
|
-
copied.each { |f| puts "- copied #{f}" }
|
67
|
-
preserved.each { |f| puts "! preserved override as #{f}" }
|
68
|
-
end
|
69
|
-
|
70
|
-
desc "Freeze all views into your application for easy modification"
|
71
|
-
task :views do
|
72
|
-
puts "Copying all view templates to your application - resolves any collisions"
|
73
|
-
copied, preserved = MerbAdmin.mirror_files_for :view
|
74
|
-
puts "- no files to copy" if copied.empty? && preserved.empty?
|
75
|
-
copied.each { |f| puts "- copied #{f}" }
|
76
|
-
preserved.each { |f| puts "! preserved override as #{f}" }
|
77
|
-
end
|
78
|
-
|
79
|
-
desc "Freeze all models into your application for easy modification"
|
80
|
-
task :models do
|
81
|
-
puts "Copying all models to your application - resolves any collisions"
|
82
|
-
copied, preserved = MerbAdmin.mirror_files_for :model
|
83
|
-
puts "- no files to copy" if copied.empty? && preserved.empty?
|
84
|
-
copied.each { |f| puts "- copied #{f}" }
|
85
|
-
preserved.each { |f| puts "! preserved override as #{f}" }
|
86
|
-
end
|
87
|
-
|
88
|
-
desc "Freezes MerbAdmin as a gem and copies over merb-admin/app"
|
89
|
-
task :app_with_gem => [:gem, :app]
|
90
|
-
|
91
|
-
desc "Freezes MerbAdmin by unpacking all files into your application"
|
92
|
-
task :unpack do
|
93
|
-
puts "Unpacking MerbAdmin files to your application - resolves any collisions"
|
94
|
-
copied, preserved = MerbAdmin.unpack_slice!
|
95
|
-
puts "- no files to copy" if copied.empty? && preserved.empty?
|
96
|
-
copied.each { |f| puts "- copied #{f}" }
|
97
|
-
preserved.each { |f| puts "! preserved override as #{f}" }
|
98
|
-
end
|
99
|
-
|
100
|
-
end
|
101
|
-
|
102
|
-
end
|
103
|
-
end
|
1
|
+
namespace :slices do
|
2
|
+
namespace :"merb-admin" do
|
3
|
+
|
4
|
+
desc "Install MerbAdmin"
|
5
|
+
task :install => [:preflight, :setup_directories, :copy_assets, :migrate]
|
6
|
+
|
7
|
+
desc "Test for any dependencies"
|
8
|
+
task :preflight do # see slicetasks.rb
|
9
|
+
end
|
10
|
+
|
11
|
+
desc "Setup directories"
|
12
|
+
task :setup_directories do
|
13
|
+
puts "Creating directories for host application"
|
14
|
+
MerbAdmin.mirrored_components.each do |type|
|
15
|
+
if File.directory?(MerbAdmin.dir_for(type))
|
16
|
+
if !File.directory?(dst_path = MerbAdmin.app_dir_for(type))
|
17
|
+
relative_path = dst_path.relative_path_from(Merb.root)
|
18
|
+
puts "- creating directory :#{type} #{File.basename(Merb.root) / relative_path}"
|
19
|
+
mkdir_p(dst_path)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
# desc "Copy stub files to host application"
|
26
|
+
# task :stubs do
|
27
|
+
# puts "Copying stubs for MerbAdmin - resolves any collisions"
|
28
|
+
# copied, preserved = MerbAdmin.mirror_stubs!
|
29
|
+
# puts "- no files to copy" if copied.empty? && preserved.empty?
|
30
|
+
# copied.each { |f| puts "- copied #{f}" }
|
31
|
+
# preserved.each { |f| puts "! preserved override as #{f}" }
|
32
|
+
# end
|
33
|
+
|
34
|
+
# desc "Copy stub files and views to host application"
|
35
|
+
# task :patch => [ "stubs", "freeze:views" ]
|
36
|
+
|
37
|
+
desc "Copy public assets to host application"
|
38
|
+
task :copy_assets do
|
39
|
+
puts "Copying assets for MerbAdmin - resolves any collisions"
|
40
|
+
copied, preserved = MerbAdmin.mirror_public!
|
41
|
+
puts "- no files to copy" if copied.empty? && preserved.empty?
|
42
|
+
copied.each { |f| puts "- copied #{f}" }
|
43
|
+
preserved.each { |f| puts "! preserved override as #{f}" }
|
44
|
+
end
|
45
|
+
|
46
|
+
desc "Migrate the database"
|
47
|
+
task :migrate do # see slicetasks.rb
|
48
|
+
end
|
49
|
+
|
50
|
+
desc "Freeze MerbAdmin into your app (only merb-admin/app)"
|
51
|
+
task :freeze => [ "freeze:app" ]
|
52
|
+
|
53
|
+
namespace :freeze do
|
54
|
+
|
55
|
+
# desc "Freezes MerbAdmin by installing the gem into application/gems"
|
56
|
+
# task :gem do
|
57
|
+
# ENV["GEM"] ||= "merb-admin"
|
58
|
+
# Rake::Task['slices:install_as_gem'].invoke
|
59
|
+
# end
|
60
|
+
|
61
|
+
desc "Freezes MerbAdmin by copying all files from merb-admin/app to your application"
|
62
|
+
task :app do
|
63
|
+
puts "Copying all merb-admin/app files to your application - resolves any collisions"
|
64
|
+
copied, preserved = MerbAdmin.mirror_app!
|
65
|
+
puts "- no files to copy" if copied.empty? && preserved.empty?
|
66
|
+
copied.each { |f| puts "- copied #{f}" }
|
67
|
+
preserved.each { |f| puts "! preserved override as #{f}" }
|
68
|
+
end
|
69
|
+
|
70
|
+
desc "Freeze all views into your application for easy modification"
|
71
|
+
task :views do
|
72
|
+
puts "Copying all view templates to your application - resolves any collisions"
|
73
|
+
copied, preserved = MerbAdmin.mirror_files_for :view
|
74
|
+
puts "- no files to copy" if copied.empty? && preserved.empty?
|
75
|
+
copied.each { |f| puts "- copied #{f}" }
|
76
|
+
preserved.each { |f| puts "! preserved override as #{f}" }
|
77
|
+
end
|
78
|
+
|
79
|
+
desc "Freeze all models into your application for easy modification"
|
80
|
+
task :models do
|
81
|
+
puts "Copying all models to your application - resolves any collisions"
|
82
|
+
copied, preserved = MerbAdmin.mirror_files_for :model
|
83
|
+
puts "- no files to copy" if copied.empty? && preserved.empty?
|
84
|
+
copied.each { |f| puts "- copied #{f}" }
|
85
|
+
preserved.each { |f| puts "! preserved override as #{f}" }
|
86
|
+
end
|
87
|
+
|
88
|
+
desc "Freezes MerbAdmin as a gem and copies over merb-admin/app"
|
89
|
+
task :app_with_gem => [:gem, :app]
|
90
|
+
|
91
|
+
desc "Freezes MerbAdmin by unpacking all files into your application"
|
92
|
+
task :unpack do
|
93
|
+
puts "Unpacking MerbAdmin files to your application - resolves any collisions"
|
94
|
+
copied, preserved = MerbAdmin.unpack_slice!
|
95
|
+
puts "- no files to copy" if copied.empty? && preserved.empty?
|
96
|
+
copied.each { |f| puts "- copied #{f}" }
|
97
|
+
preserved.each { |f| puts "! preserved override as #{f}" }
|
98
|
+
end
|
99
|
+
|
100
|
+
end
|
101
|
+
|
102
|
+
end
|
103
|
+
end
|
@@ -1,174 +1,174 @@
|
|
1
|
-
require 'abstract_model'
|
2
|
-
|
3
|
-
namespace :slices do
|
4
|
-
namespace :"merb-admin" do
|
5
|
-
|
6
|
-
# # Uncomment the following lines and edit the pre defined tasks
|
7
|
-
#
|
8
|
-
# # implement this to test for structural/code dependencies
|
9
|
-
# # like certain directories or availability of other files
|
10
|
-
# desc "Test for any dependencies"
|
11
|
-
# task :preflight do
|
12
|
-
# end
|
13
|
-
#
|
14
|
-
# # implement this to perform any database related setup steps
|
15
|
-
# desc "Migrate the database"
|
16
|
-
# task :migrate do
|
17
|
-
# end
|
18
|
-
|
19
|
-
desc "Copies sample models, copies and runs sample migrations, and loads sample data into your app"
|
20
|
-
task :activerecord => ["activerecord:copy_sample_models", "activerecord:copy_sample_migrations", "activerecord:migrate", "load_sample_data"]
|
21
|
-
namespace :activerecord do
|
22
|
-
desc "Copies sample models into your app"
|
23
|
-
task :copy_sample_models do
|
24
|
-
copy_models(:activerecord)
|
25
|
-
end
|
26
|
-
|
27
|
-
desc "Copies sample migrations into your app"
|
28
|
-
task :copy_sample_migrations do
|
29
|
-
copy_migrations(:activerecord)
|
30
|
-
end
|
31
|
-
|
32
|
-
desc "Migrate the database to the latest version"
|
33
|
-
task :migrate do
|
34
|
-
Rake::Task["db:migrate"].reenable
|
35
|
-
Rake::Task["db:migrate"].invoke
|
36
|
-
end
|
37
|
-
end
|
38
|
-
|
39
|
-
desc "Copies sample models, runs sample migrations, and loads sample data into your app"
|
40
|
-
task :datamapper => ["datamapper:copy_sample_models", "datamapper:migrate", "load_sample_data"]
|
41
|
-
namespace :datamapper do
|
42
|
-
desc "Copies sample models into your app"
|
43
|
-
task :copy_sample_models do
|
44
|
-
copy_models(:datamapper)
|
45
|
-
end
|
46
|
-
|
47
|
-
desc "Perform non destructive automigration"
|
48
|
-
task :migrate do
|
49
|
-
Rake::Task["db:automigrate"].reenable
|
50
|
-
Rake::Task["db:automigrate"].invoke
|
51
|
-
end
|
52
|
-
end
|
53
|
-
|
54
|
-
desc "Copies sample models, copies and runs sample migrations, and loads sample data"
|
55
|
-
task :sequel => ["sequel:copy_sample_models", "sequel:copy_sample_migrations", "sequel:migrate", "load_sample_data"]
|
56
|
-
namespace :sequel do
|
57
|
-
desc "Copies sample models into your app"
|
58
|
-
task :copy_sample_models do
|
59
|
-
copy_models(:sequel)
|
60
|
-
end
|
61
|
-
|
62
|
-
desc "Copies sample migrations into your app"
|
63
|
-
task :copy_sample_migrations do
|
64
|
-
copy_migrations(:sequel)
|
65
|
-
end
|
66
|
-
|
67
|
-
desc "Perform migration using migrations in schema/migrations"
|
68
|
-
task :migrate do
|
69
|
-
require 'sequel/extensions/migration'
|
70
|
-
Rake::Task["sequel:db:migrate"].reenable
|
71
|
-
Rake::Task["sequel:db:migrate"].invoke
|
72
|
-
end
|
73
|
-
end
|
74
|
-
|
75
|
-
desc "Loads sample data into your app"
|
76
|
-
task :load_sample_data do
|
77
|
-
load_data
|
78
|
-
end
|
79
|
-
|
80
|
-
end
|
81
|
-
end
|
82
|
-
|
83
|
-
private
|
84
|
-
|
85
|
-
def load_data
|
86
|
-
begin
|
87
|
-
require "mlb"
|
88
|
-
rescue LoadError => e
|
89
|
-
puts "LoadError: #{e}"
|
90
|
-
puts "gem install mlb -s http://gemcutter.org"
|
91
|
-
return
|
92
|
-
end
|
93
|
-
|
94
|
-
require_models
|
95
|
-
|
96
|
-
puts "Loading current MLB leagues, divisions, teams, and players"
|
97
|
-
MLB::Team.all.each do |mlb_team|
|
98
|
-
unless league = MerbAdmin::AbstractModel.new("League").first(:conditions => ["name = ?", mlb_team.league])
|
99
|
-
league = MerbAdmin::AbstractModel.new("League").create(:name => mlb_team.league)
|
100
|
-
end
|
101
|
-
unless division = MerbAdmin::AbstractModel.new("Division").first(:conditions => ["name = ?", mlb_team.division])
|
102
|
-
division = MerbAdmin::AbstractModel.new("Division").create(:name => mlb_team.division, :league => league)
|
103
|
-
end
|
104
|
-
unless team = MerbAdmin::AbstractModel.new("Team").first(:conditions => ["name = ?", mlb_team.name])
|
105
|
-
team = MerbAdmin::AbstractModel.new("Team").create(:name => mlb_team.name, :logo_url => mlb_team.logo_url, :manager => mlb_team.manager, :ballpark => mlb_team.ballpark, :mascot => mlb_team.mascot, :founded => mlb_team.founded, :wins => mlb_team.wins, :losses => mlb_team.losses, :win_percentage => ("%.3f" % (mlb_team.wins.to_f / (mlb_team.wins + mlb_team.losses))).to_f, :division => division, :league => league)
|
106
|
-
end
|
107
|
-
mlb_team.players.reject{|player| player.number.nil?}.each do |player|
|
108
|
-
MerbAdmin::AbstractModel.new("Player").create(:name => player.name, :number => player.number, :position => player.position, :team => team)
|
109
|
-
end
|
110
|
-
end
|
111
|
-
end
|
112
|
-
|
113
|
-
def copy_models(orm = nil)
|
114
|
-
orm ||= set_orm
|
115
|
-
puts "Copying sample #{orm} models into host application - resolves any collisions"
|
116
|
-
seen, copied, duplicated = [], [], []
|
117
|
-
Dir.glob(File.dirname(__FILE__) / ".." / ".." / "spec" / "models" / orm.to_s.downcase / MerbAdmin.glob_for(:model)).each do |source_filename|
|
118
|
-
next if seen.include?(source_filename)
|
119
|
-
destination_filename = Merb.dir_for(:model) / File.basename(source_filename)
|
120
|
-
mirror_file(source_filename, destination_filename, copied, duplicated)
|
121
|
-
seen << source_filename
|
122
|
-
end
|
123
|
-
copied.each { |f| puts "- copied #{f}" }
|
124
|
-
duplicated.each { |f| puts "! duplicated override as #{f}" }
|
125
|
-
end
|
126
|
-
|
127
|
-
def copy_migrations(orm = nil)
|
128
|
-
orm ||= set_orm
|
129
|
-
puts "Copying sample #{orm} migrations into host application - resolves any collisions"
|
130
|
-
seen, copied, duplicated = [], [], []
|
131
|
-
Dir.glob(File.dirname(__FILE__) / ".." / ".." / "spec" / "migrations" / orm.to_s.downcase / "*.rb").each do |source_filename|
|
132
|
-
next if seen.include?(source_filename)
|
133
|
-
destination_filename = Merb.root / "schema" / "migrations" / File.basename(source_filename)
|
134
|
-
mirror_file(source_filename, destination_filename, copied, duplicated)
|
135
|
-
seen << source_filename
|
136
|
-
end
|
137
|
-
copied.each { |f| puts "- copied #{f}" }
|
138
|
-
duplicated.each { |f| puts "! duplicated override as #{f}" }
|
139
|
-
end
|
140
|
-
|
141
|
-
def require_models
|
142
|
-
Dir.glob(Merb.dir_for(:model) / Merb.glob_for(:model)).each do |model_filename|
|
143
|
-
require model_filename
|
144
|
-
end
|
145
|
-
end
|
146
|
-
|
147
|
-
def set_orm(orm = nil)
|
148
|
-
orm || ENV['MERB_ORM'] || (Merb.orm != :none ? Merb.orm : nil) || :activerecord
|
149
|
-
end
|
150
|
-
|
151
|
-
def mirror_file(source, dest, copied = [], duplicated = [], postfix = '_override')
|
152
|
-
base, rest = split_name(source)
|
153
|
-
dst_dir = File.dirname(dest)
|
154
|
-
dup_path = dst_dir / "#{base}#{postfix}.#{rest}"
|
155
|
-
if File.file?(source)
|
156
|
-
FileUtils.mkdir_p(dst_dir) unless File.directory?(dst_dir)
|
157
|
-
if File.exists?(dest) && !File.exists?(dup_path) && !FileUtils.identical?(source, dest)
|
158
|
-
# copy app-level override to *_override.ext
|
159
|
-
FileUtils.copy_entry(dest, dup_path, false, false, true)
|
160
|
-
duplicated << dup_path.relative_path_from(Merb.root)
|
161
|
-
end
|
162
|
-
# copy gem-level original to location
|
163
|
-
if !File.exists?(dest) || (File.exists?(dest) && !FileUtils.identical?(source, dest))
|
164
|
-
FileUtils.copy_entry(source, dest, false, false, true)
|
165
|
-
copied << dest.relative_path_from(Merb.root)
|
166
|
-
end
|
167
|
-
end
|
168
|
-
end
|
169
|
-
|
170
|
-
def split_name(name)
|
171
|
-
file_name = File.basename(name)
|
172
|
-
mres = /^([^\/\.]+)\.(.+)$/i.match(file_name)
|
173
|
-
mres.nil? ? [file_name, ''] : [mres[1], mres[2]]
|
174
|
-
end
|
1
|
+
require 'abstract_model'
|
2
|
+
|
3
|
+
namespace :slices do
|
4
|
+
namespace :"merb-admin" do
|
5
|
+
|
6
|
+
# # Uncomment the following lines and edit the pre defined tasks
|
7
|
+
#
|
8
|
+
# # implement this to test for structural/code dependencies
|
9
|
+
# # like certain directories or availability of other files
|
10
|
+
# desc "Test for any dependencies"
|
11
|
+
# task :preflight do
|
12
|
+
# end
|
13
|
+
#
|
14
|
+
# # implement this to perform any database related setup steps
|
15
|
+
# desc "Migrate the database"
|
16
|
+
# task :migrate do
|
17
|
+
# end
|
18
|
+
|
19
|
+
desc "Copies sample models, copies and runs sample migrations, and loads sample data into your app"
|
20
|
+
task :activerecord => ["activerecord:copy_sample_models", "activerecord:copy_sample_migrations", "activerecord:migrate", "load_sample_data"]
|
21
|
+
namespace :activerecord do
|
22
|
+
desc "Copies sample models into your app"
|
23
|
+
task :copy_sample_models do
|
24
|
+
copy_models(:activerecord)
|
25
|
+
end
|
26
|
+
|
27
|
+
desc "Copies sample migrations into your app"
|
28
|
+
task :copy_sample_migrations do
|
29
|
+
copy_migrations(:activerecord)
|
30
|
+
end
|
31
|
+
|
32
|
+
desc "Migrate the database to the latest version"
|
33
|
+
task :migrate do
|
34
|
+
Rake::Task["db:migrate"].reenable
|
35
|
+
Rake::Task["db:migrate"].invoke
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
desc "Copies sample models, runs sample migrations, and loads sample data into your app"
|
40
|
+
task :datamapper => ["datamapper:copy_sample_models", "datamapper:migrate", "load_sample_data"]
|
41
|
+
namespace :datamapper do
|
42
|
+
desc "Copies sample models into your app"
|
43
|
+
task :copy_sample_models do
|
44
|
+
copy_models(:datamapper)
|
45
|
+
end
|
46
|
+
|
47
|
+
desc "Perform non destructive automigration"
|
48
|
+
task :migrate do
|
49
|
+
Rake::Task["db:automigrate"].reenable
|
50
|
+
Rake::Task["db:automigrate"].invoke
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
desc "Copies sample models, copies and runs sample migrations, and loads sample data"
|
55
|
+
task :sequel => ["sequel:copy_sample_models", "sequel:copy_sample_migrations", "sequel:migrate", "load_sample_data"]
|
56
|
+
namespace :sequel do
|
57
|
+
desc "Copies sample models into your app"
|
58
|
+
task :copy_sample_models do
|
59
|
+
copy_models(:sequel)
|
60
|
+
end
|
61
|
+
|
62
|
+
desc "Copies sample migrations into your app"
|
63
|
+
task :copy_sample_migrations do
|
64
|
+
copy_migrations(:sequel)
|
65
|
+
end
|
66
|
+
|
67
|
+
desc "Perform migration using migrations in schema/migrations"
|
68
|
+
task :migrate do
|
69
|
+
require 'sequel/extensions/migration'
|
70
|
+
Rake::Task["sequel:db:migrate"].reenable
|
71
|
+
Rake::Task["sequel:db:migrate"].invoke
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
desc "Loads sample data into your app"
|
76
|
+
task :load_sample_data do
|
77
|
+
load_data
|
78
|
+
end
|
79
|
+
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
private
|
84
|
+
|
85
|
+
def load_data
|
86
|
+
begin
|
87
|
+
require "mlb"
|
88
|
+
rescue LoadError => e
|
89
|
+
puts "LoadError: #{e}"
|
90
|
+
puts "gem install mlb -s http://gemcutter.org"
|
91
|
+
return
|
92
|
+
end
|
93
|
+
|
94
|
+
require_models
|
95
|
+
|
96
|
+
puts "Loading current MLB leagues, divisions, teams, and players"
|
97
|
+
MLB::Team.all.each do |mlb_team|
|
98
|
+
unless league = MerbAdmin::AbstractModel.new("League").first(:conditions => ["name = ?", mlb_team.league])
|
99
|
+
league = MerbAdmin::AbstractModel.new("League").create(:name => mlb_team.league)
|
100
|
+
end
|
101
|
+
unless division = MerbAdmin::AbstractModel.new("Division").first(:conditions => ["name = ?", mlb_team.division])
|
102
|
+
division = MerbAdmin::AbstractModel.new("Division").create(:name => mlb_team.division, :league => league)
|
103
|
+
end
|
104
|
+
unless team = MerbAdmin::AbstractModel.new("Team").first(:conditions => ["name = ?", mlb_team.name])
|
105
|
+
team = MerbAdmin::AbstractModel.new("Team").create(:name => mlb_team.name, :logo_url => mlb_team.logo_url, :manager => mlb_team.manager, :ballpark => mlb_team.ballpark, :mascot => mlb_team.mascot, :founded => mlb_team.founded, :wins => mlb_team.wins, :losses => mlb_team.losses, :win_percentage => ("%.3f" % (mlb_team.wins.to_f / (mlb_team.wins + mlb_team.losses))).to_f, :division => division, :league => league)
|
106
|
+
end
|
107
|
+
mlb_team.players.reject{|player| player.number.nil?}.each do |player|
|
108
|
+
MerbAdmin::AbstractModel.new("Player").create(:name => player.name, :number => player.number, :position => player.position, :team => team)
|
109
|
+
end
|
110
|
+
end
|
111
|
+
end
|
112
|
+
|
113
|
+
def copy_models(orm = nil)
|
114
|
+
orm ||= set_orm
|
115
|
+
puts "Copying sample #{orm} models into host application - resolves any collisions"
|
116
|
+
seen, copied, duplicated = [], [], []
|
117
|
+
Dir.glob(File.dirname(__FILE__) / ".." / ".." / "spec" / "models" / orm.to_s.downcase / MerbAdmin.glob_for(:model)).each do |source_filename|
|
118
|
+
next if seen.include?(source_filename)
|
119
|
+
destination_filename = Merb.dir_for(:model) / File.basename(source_filename)
|
120
|
+
mirror_file(source_filename, destination_filename, copied, duplicated)
|
121
|
+
seen << source_filename
|
122
|
+
end
|
123
|
+
copied.each { |f| puts "- copied #{f}" }
|
124
|
+
duplicated.each { |f| puts "! duplicated override as #{f}" }
|
125
|
+
end
|
126
|
+
|
127
|
+
def copy_migrations(orm = nil)
|
128
|
+
orm ||= set_orm
|
129
|
+
puts "Copying sample #{orm} migrations into host application - resolves any collisions"
|
130
|
+
seen, copied, duplicated = [], [], []
|
131
|
+
Dir.glob(File.dirname(__FILE__) / ".." / ".." / "spec" / "migrations" / orm.to_s.downcase / "*.rb").each do |source_filename|
|
132
|
+
next if seen.include?(source_filename)
|
133
|
+
destination_filename = Merb.root / "schema" / "migrations" / File.basename(source_filename)
|
134
|
+
mirror_file(source_filename, destination_filename, copied, duplicated)
|
135
|
+
seen << source_filename
|
136
|
+
end
|
137
|
+
copied.each { |f| puts "- copied #{f}" }
|
138
|
+
duplicated.each { |f| puts "! duplicated override as #{f}" }
|
139
|
+
end
|
140
|
+
|
141
|
+
def require_models
|
142
|
+
Dir.glob(Merb.dir_for(:model) / Merb.glob_for(:model)).each do |model_filename|
|
143
|
+
require model_filename
|
144
|
+
end
|
145
|
+
end
|
146
|
+
|
147
|
+
def set_orm(orm = nil)
|
148
|
+
orm || ENV['MERB_ORM'] || (Merb.orm != :none ? Merb.orm : nil) || :activerecord
|
149
|
+
end
|
150
|
+
|
151
|
+
def mirror_file(source, dest, copied = [], duplicated = [], postfix = '_override')
|
152
|
+
base, rest = split_name(source)
|
153
|
+
dst_dir = File.dirname(dest)
|
154
|
+
dup_path = dst_dir / "#{base}#{postfix}.#{rest}"
|
155
|
+
if File.file?(source)
|
156
|
+
FileUtils.mkdir_p(dst_dir) unless File.directory?(dst_dir)
|
157
|
+
if File.exists?(dest) && !File.exists?(dup_path) && !FileUtils.identical?(source, dest)
|
158
|
+
# copy app-level override to *_override.ext
|
159
|
+
FileUtils.copy_entry(dest, dup_path, false, false, true)
|
160
|
+
duplicated << dup_path.relative_path_from(Merb.root)
|
161
|
+
end
|
162
|
+
# copy gem-level original to location
|
163
|
+
if !File.exists?(dest) || (File.exists?(dest) && !FileUtils.identical?(source, dest))
|
164
|
+
FileUtils.copy_entry(source, dest, false, false, true)
|
165
|
+
copied << dest.relative_path_from(Merb.root)
|
166
|
+
end
|
167
|
+
end
|
168
|
+
end
|
169
|
+
|
170
|
+
def split_name(name)
|
171
|
+
file_name = File.basename(name)
|
172
|
+
mres = /^([^\/\.]+)\.(.+)$/i.match(file_name)
|
173
|
+
mres.nil? ? [file_name, ''] : [mres[1], mres[2]]
|
174
|
+
end
|