merb-admin 0.4.9 → 0.5.0
Sign up to get free protection for your applications and to get access to all the features.
- data/README.markdown +1 -1
- data/Rakefile +3 -2
- data/lib/merb-admin/merbtasks.rb +16 -16
- data/lib/merb-admin/slicetasks.rb +116 -5
- data/lib/merb-admin/spectasks.rb +7 -7
- data/lib/merb-admin.rb +3 -3
- data/schema/migrations/002_create_drafts_migration.rb +1 -0
- data/schema/migrations/004_create_players_migration.rb +3 -0
- data/schema/migrations/005_create_teams_migration.rb +2 -0
- data/spec/models/datamapper/draft.rb +1 -1
- data/spec/models/datamapper/player.rb +2 -2
- data/spec/models/datamapper/team.rb +2 -2
- metadata +12 -2
data/README.markdown
CHANGED
data/Rakefile
CHANGED
@@ -7,9 +7,9 @@ require "merb-core/tasks/merb"
|
|
7
7
|
GEM_NAME = "merb-admin"
|
8
8
|
AUTHOR = "Erik Michaels-Ober"
|
9
9
|
EMAIL = "sferik@gmail.com"
|
10
|
-
HOMEPAGE = "http://
|
10
|
+
HOMEPAGE = "http://github.com/sferik/merb-admin"
|
11
11
|
SUMMARY = "MerbAdmin is a Merb plugin that provides an easy-to-use interface for managing your data."
|
12
|
-
GEM_VERSION = "0.
|
12
|
+
GEM_VERSION = "0.5.0"
|
13
13
|
|
14
14
|
spec = Gem::Specification.new do |s|
|
15
15
|
s.rubyforge_project = "merb"
|
@@ -25,6 +25,7 @@ spec = Gem::Specification.new do |s|
|
|
25
25
|
s.homepage = HOMEPAGE
|
26
26
|
s.add_dependency("merb-slices", ">= 1.0.12")
|
27
27
|
s.add_dependency("builder", ">= 2.1.2")
|
28
|
+
s.add_dependency("mlb", ">= 0.0.1")
|
28
29
|
s.require_path = "lib"
|
29
30
|
s.files = %w(LICENSE README.markdown Rakefile) + Dir.glob("{app,lib,public,schema,spec,stubs}/**/*")
|
30
31
|
s.post_install_message = <<-POST_INSTALL_MESSAGE
|
data/lib/merb-admin/merbtasks.rb
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
namespace :slices do
|
2
2
|
namespace :"merb-admin" do
|
3
|
-
|
3
|
+
|
4
4
|
desc "Install MerbAdmin"
|
5
5
|
task :install => [:preflight, :setup_directories, :copy_assets, :migrate]
|
6
|
-
|
6
|
+
|
7
7
|
desc "Test for any dependencies"
|
8
8
|
task :preflight do # see slicetasks.rb
|
9
9
|
end
|
10
|
-
|
10
|
+
|
11
11
|
desc "Setup directories"
|
12
12
|
task :setup_directories do
|
13
13
|
puts "Creating directories for host application"
|
@@ -21,7 +21,7 @@ namespace :slices do
|
|
21
21
|
end
|
22
22
|
end
|
23
23
|
end
|
24
|
-
|
24
|
+
|
25
25
|
# desc "Copy stub files to host application"
|
26
26
|
# task :stubs do
|
27
27
|
# puts "Copying stubs for MerbAdmin - resolves any collisions"
|
@@ -30,10 +30,10 @@ namespace :slices do
|
|
30
30
|
# copied.each { |f| puts "- copied #{f}" }
|
31
31
|
# preserved.each { |f| puts "! preserved override as #{f}" }
|
32
32
|
# end
|
33
|
-
|
33
|
+
|
34
34
|
# desc "Copy stub files and views to host application"
|
35
35
|
# task :patch => [ "stubs", "freeze:views" ]
|
36
|
-
|
36
|
+
|
37
37
|
desc "Copy public assets to host application"
|
38
38
|
task :copy_assets do
|
39
39
|
puts "Copying assets for MerbAdmin - resolves any collisions"
|
@@ -42,22 +42,22 @@ namespace :slices do
|
|
42
42
|
copied.each { |f| puts "- copied #{f}" }
|
43
43
|
preserved.each { |f| puts "! preserved override as #{f}" }
|
44
44
|
end
|
45
|
-
|
45
|
+
|
46
46
|
desc "Migrate the database"
|
47
47
|
task :migrate do # see slicetasks.rb
|
48
48
|
end
|
49
|
-
|
49
|
+
|
50
50
|
desc "Freeze MerbAdmin into your app (only merb-admin/app)"
|
51
51
|
task :freeze => [ "freeze:app" ]
|
52
52
|
|
53
53
|
namespace :freeze do
|
54
|
-
|
54
|
+
|
55
55
|
# desc "Freezes MerbAdmin by installing the gem into application/gems"
|
56
56
|
# task :gem do
|
57
57
|
# ENV["GEM"] ||= "merb-admin"
|
58
58
|
# Rake::Task['slices:install_as_gem'].invoke
|
59
59
|
# end
|
60
|
-
|
60
|
+
|
61
61
|
desc "Freezes MerbAdmin by copying all files from merb-admin/app to your application"
|
62
62
|
task :app do
|
63
63
|
puts "Copying all merb-admin/app files to your application - resolves any collisions"
|
@@ -66,7 +66,7 @@ namespace :slices do
|
|
66
66
|
copied.each { |f| puts "- copied #{f}" }
|
67
67
|
preserved.each { |f| puts "! preserved override as #{f}" }
|
68
68
|
end
|
69
|
-
|
69
|
+
|
70
70
|
desc "Freeze all views into your application for easy modification"
|
71
71
|
task :views do
|
72
72
|
puts "Copying all view templates to your application - resolves any collisions"
|
@@ -75,7 +75,7 @@ namespace :slices do
|
|
75
75
|
copied.each { |f| puts "- copied #{f}" }
|
76
76
|
preserved.each { |f| puts "! preserved override as #{f}" }
|
77
77
|
end
|
78
|
-
|
78
|
+
|
79
79
|
desc "Freeze all models into your application for easy modification"
|
80
80
|
task :models do
|
81
81
|
puts "Copying all models to your application - resolves any collisions"
|
@@ -84,10 +84,10 @@ namespace :slices do
|
|
84
84
|
copied.each { |f| puts "- copied #{f}" }
|
85
85
|
preserved.each { |f| puts "! preserved override as #{f}" }
|
86
86
|
end
|
87
|
-
|
87
|
+
|
88
88
|
desc "Freezes MerbAdmin as a gem and copies over merb-admin/app"
|
89
89
|
task :app_with_gem => [:gem, :app]
|
90
|
-
|
90
|
+
|
91
91
|
desc "Freezes MerbAdmin by unpacking all files into your application"
|
92
92
|
task :unpack do
|
93
93
|
puts "Unpacking MerbAdmin files to your application - resolves any collisions"
|
@@ -96,8 +96,8 @@ namespace :slices do
|
|
96
96
|
copied.each { |f| puts "- copied #{f}" }
|
97
97
|
preserved.each { |f| puts "! preserved override as #{f}" }
|
98
98
|
end
|
99
|
-
|
99
|
+
|
100
100
|
end
|
101
|
-
|
101
|
+
|
102
102
|
end
|
103
103
|
end
|
@@ -1,8 +1,37 @@
|
|
1
|
+
require 'mlb'
|
2
|
+
require 'abstract_model'
|
3
|
+
|
1
4
|
namespace :slices do
|
2
|
-
namespace :"merb-admin" do
|
3
|
-
|
5
|
+
namespace :"merb-admin" do
|
6
|
+
|
7
|
+
desc "Loads sample DataMapper models and data"
|
8
|
+
task :load_sample => ["load_sample:datamapper"]
|
9
|
+
|
10
|
+
namespace :load_sample do
|
11
|
+
|
12
|
+
desc "Loads sample ActiveRecord models"
|
13
|
+
task :activerecord do
|
14
|
+
puts "Copying sample ActiveRecord models into host application - resolves any collisions"
|
15
|
+
copy_models(:activerecord)
|
16
|
+
puts "Copying sample ActiveRecord migrations into host application - resolves any collisions"
|
17
|
+
copy_migrations
|
18
|
+
Rake::Task["db:migrate"].reenable
|
19
|
+
Rake::Task["db:migrate"].invoke
|
20
|
+
load_data
|
21
|
+
end
|
22
|
+
|
23
|
+
desc "Loads sample DataMapper models"
|
24
|
+
task :datamapper do
|
25
|
+
puts "Copying sample DataMapper models into host application - resolves any collisions"
|
26
|
+
copy_models(:datamapper)
|
27
|
+
Rake::Task["db:automigrate"].reenable
|
28
|
+
Rake::Task["db:automigrate"].invoke
|
29
|
+
load_data
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
4
33
|
# add your own merb-admin tasks here
|
5
|
-
|
34
|
+
|
6
35
|
# # Uncomment the following lines and edit the pre defined tasks
|
7
36
|
#
|
8
37
|
# # implement this to test for structural/code dependencies
|
@@ -10,11 +39,93 @@ namespace :slices do
|
|
10
39
|
# desc "Test for any dependencies"
|
11
40
|
# task :preflight do
|
12
41
|
# end
|
13
|
-
#
|
42
|
+
#
|
14
43
|
# # implement this to perform any database related setup steps
|
15
44
|
# desc "Migrate the database"
|
16
45
|
# task :migrate do
|
17
46
|
# end
|
18
|
-
|
47
|
+
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
private
|
52
|
+
|
53
|
+
def load_data
|
54
|
+
puts "Loading current MLB leagues, divisions, mlb_teams, and players"
|
55
|
+
MLB.teams.each do |mlb_team|
|
56
|
+
unless league = MerbAdmin::AbstractModel.new("League").first(:conditions => ["name = ?", mlb_team['league']['name']])
|
57
|
+
league = MerbAdmin::AbstractModel.new("League").create(:name => mlb_team['league']['name'])
|
58
|
+
end
|
59
|
+
unless division = MerbAdmin::AbstractModel.new("Division").first(:conditions => ["name = ?", mlb_team['division']['name']])
|
60
|
+
division = MerbAdmin::AbstractModel.new("Division").create(:name => mlb_team['division']['name'], :league => league)
|
61
|
+
end
|
62
|
+
unless team = MerbAdmin::AbstractModel.new("Team").first(:conditions => ["name = ?", mlb_team['name']])
|
63
|
+
team = MerbAdmin::AbstractModel.new("Team").create(:name => mlb_team['name'], :division => division, :league => league)
|
64
|
+
end
|
65
|
+
mlb_team['current_roster'].each do |player|
|
66
|
+
MerbAdmin::AbstractModel.new("Player").create(:name => player['player'], :number => player['number'], :position => player['position'], :team => team)
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
def copy_models(orm = nil)
|
72
|
+
orm ||= set_orm
|
73
|
+
seen, copied, duplicated = [], [], []
|
74
|
+
Dir.glob(File.dirname(__FILE__) / ".." / ".." / "spec" / "models" / orm.to_s.downcase / MerbAdmin.glob_for(:model)).each do |source_filename|
|
75
|
+
destination_filename = Merb.dir_for(:model) / File.basename(source_filename)
|
76
|
+
next if seen.include?(source_filename)
|
77
|
+
mirror_file(source_filename, destination_filename, copied, duplicated)
|
78
|
+
seen << source_filename
|
79
|
+
end
|
80
|
+
copied.each { |f| puts "- copied #{f}" }
|
81
|
+
duplicated.each { |f| puts "! duplicated override as #{f}" }
|
82
|
+
end
|
83
|
+
|
84
|
+
def copy_migrations
|
85
|
+
seen, copied, duplicated = [], [], []
|
86
|
+
Dir.glob(File.dirname(__FILE__) / ".." / ".." / "schema" / "migrations" / "*.rb").each do |source_filename|
|
87
|
+
destination_filename = Merb.root / "schema" / "migrations" / File.basename(source_filename)
|
88
|
+
next if seen.include?(source_filename)
|
89
|
+
mirror_file(source_filename, destination_filename, copied, duplicated)
|
90
|
+
seen << source_filename
|
19
91
|
end
|
92
|
+
copied.each { |f| puts "- copied #{f}" }
|
93
|
+
duplicated.each { |f| puts "! duplicated override as #{f}" }
|
94
|
+
end
|
95
|
+
|
96
|
+
def require_models(orm = nil)
|
97
|
+
orm ||= set_orm
|
98
|
+
Dir.glob(File.dirname(__FILE__) / "models" / orm.to_s.downcase / Merb.glob_for(:model)).each do |model_filename|
|
99
|
+
require model_filename
|
100
|
+
end
|
101
|
+
end
|
102
|
+
|
103
|
+
def set_orm(orm = nil)
|
104
|
+
orm || ENV['MERB_ORM'] || (Merb.orm != :none ? Merb.orm : nil) || :datamapper
|
105
|
+
end
|
106
|
+
|
107
|
+
def mirror_file(source, dest, copied = [], duplicated = [], postfix = '_override')
|
108
|
+
base, rest = split_name(source)
|
109
|
+
dst_dir = File.dirname(dest)
|
110
|
+
dup_path = dst_dir / "#{base}#{postfix}.#{rest}"
|
111
|
+
if File.file?(source)
|
112
|
+
FileUtils.mkdir_p(dst_dir) unless File.directory?(dst_dir)
|
113
|
+
if File.exists?(dest) && !File.exists?(dup_path) && !FileUtils.identical?(source, dest)
|
114
|
+
# copy app-level override to *_override.ext
|
115
|
+
FileUtils.copy_entry(dest, dup_path, false, false, true)
|
116
|
+
duplicated << dup_path.relative_path_from(Merb.root)
|
117
|
+
end
|
118
|
+
# copy gem-level original to location
|
119
|
+
if !File.exists?(dest) || (File.exists?(dest) && !FileUtils.identical?(source, dest))
|
120
|
+
FileUtils.copy_entry(source, dest, false, false, true)
|
121
|
+
copied << dest.relative_path_from(Merb.root)
|
122
|
+
end
|
123
|
+
end
|
124
|
+
end
|
125
|
+
|
126
|
+
def split_name(name)
|
127
|
+
file_name = File.basename(name)
|
128
|
+
mres = /^([^\/\.]+)\.(.+)$/i.match(file_name)
|
129
|
+
mres.nil? ? [file_name, ''] : [mres[1], mres[2]]
|
20
130
|
end
|
131
|
+
|
data/lib/merb-admin/spectasks.rb
CHANGED
@@ -1,20 +1,20 @@
|
|
1
1
|
namespace :slices do
|
2
2
|
namespace :"merb-admin" do
|
3
|
-
|
3
|
+
|
4
4
|
desc "Run slice specs within the host application context"
|
5
5
|
task :spec => [ "spec:explain", "spec:default" ]
|
6
|
-
|
6
|
+
|
7
7
|
namespace :spec do
|
8
|
-
|
8
|
+
|
9
9
|
slice_root = File.expand_path(File.join(File.dirname(__FILE__), '..', '..'))
|
10
|
-
|
10
|
+
|
11
11
|
task :explain do
|
12
12
|
puts "\nNote: By running MerbAdmin specs inside the application context any\n" +
|
13
13
|
"overrides could break existing specs. This isn't always a problem,\n" +
|
14
14
|
"especially in the case of views. Use these spec tasks to check how\n" +
|
15
15
|
"well your application conforms to the original slice implementation."
|
16
16
|
end
|
17
|
-
|
17
|
+
|
18
18
|
Spec::Rake::SpecTask.new('default') do |t|
|
19
19
|
t.spec_opts = ["--format", "specdoc", "--colour"]
|
20
20
|
t.spec_files = Dir["#{slice_root}/spec/**/*_spec.rb"].sort
|
@@ -46,8 +46,8 @@ namespace :slices do
|
|
46
46
|
t.libs = ['lib', 'server/lib' ]
|
47
47
|
t.spec_files = Dir["#{slice_root}/spec/**/*_spec.rb"].sort
|
48
48
|
end
|
49
|
-
|
49
|
+
|
50
50
|
end
|
51
|
-
|
51
|
+
|
52
52
|
end
|
53
53
|
end
|
data/lib/merb-admin.rb
CHANGED
@@ -11,19 +11,19 @@ if defined?(Merb::Plugins)
|
|
11
11
|
# Slice configuration - set this in a before_app_loads callback.
|
12
12
|
# By default a Slice uses its own layout, so you can swicht to
|
13
13
|
# the main application layout or no layout at all if needed.
|
14
|
-
#
|
14
|
+
#
|
15
15
|
# Configuration options:
|
16
16
|
# :layout - the layout to use; defaults to :merb-admin
|
17
17
|
# :mirror - which path component types to use on copy operations; defaults to all
|
18
18
|
Merb::Slices::config[:merb_admin][:layout] ||= :merb_admin
|
19
19
|
Merb::Slices::config[:merb_admin][:per_page] ||= 100
|
20
|
-
|
20
|
+
|
21
21
|
# All Slice code is expected to be namespaced inside a module
|
22
22
|
module MerbAdmin
|
23
23
|
|
24
24
|
# Slice metadata
|
25
25
|
self.description = "MerbAdmin is a Merb plugin that provides an easy-to-use interface for managing your data."
|
26
|
-
self.version = "0.
|
26
|
+
self.version = "0.5.0"
|
27
27
|
self.author = "Erik Michaels-Ober"
|
28
28
|
|
29
29
|
# Stub classes loaded hook - runs before LoadClasses BootLoader
|
@@ -10,7 +10,7 @@ class Draft
|
|
10
10
|
property :round, Integer, :nullable => false
|
11
11
|
property :pick, Integer, :nullable => false
|
12
12
|
property :overall, Integer, :nullable => false
|
13
|
-
property :college, String, :length => 100
|
13
|
+
property :college, String, :length => 100, :index => true
|
14
14
|
property :notes, Text
|
15
15
|
|
16
16
|
belongs_to :team
|
@@ -5,9 +5,9 @@ class Player
|
|
5
5
|
property :created_at, DateTime
|
6
6
|
property :updated_at, DateTime
|
7
7
|
property :deleted_at, ParanoidDateTime
|
8
|
-
property :team_id, Integer
|
8
|
+
property :team_id, Integer, :index => true
|
9
9
|
property :name, String, :length => 100, :nullable => false, :index => true
|
10
|
-
property :position, String
|
10
|
+
property :position, String, :index => true
|
11
11
|
property :number, Integer, :nullable => false
|
12
12
|
property :retired, Boolean, :default => false
|
13
13
|
property :injured, Boolean, :default => false
|
@@ -9,8 +9,8 @@ class Team
|
|
9
9
|
property :name, String, :nullable => false, :index => true
|
10
10
|
property :logo_image_url, String, :length => 255
|
11
11
|
property :manager, String, :length => 100, :nullable => false, :index => true
|
12
|
-
property :ballpark, String, :length => 100
|
13
|
-
property :mascot, String, :length => 100
|
12
|
+
property :ballpark, String, :length => 100, :index => true
|
13
|
+
property :mascot, String, :length => 100, :index => true
|
14
14
|
property :founded, Integer, :nullable => false
|
15
15
|
property :wins, Integer, :nullable => false
|
16
16
|
property :losses, Integer, :nullable => false
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: merb-admin
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Erik Michaels-Ober
|
@@ -32,6 +32,16 @@ dependencies:
|
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: 2.1.2
|
34
34
|
version:
|
35
|
+
- !ruby/object:Gem::Dependency
|
36
|
+
name: mlb
|
37
|
+
type: :runtime
|
38
|
+
version_requirement:
|
39
|
+
version_requirements: !ruby/object:Gem::Requirement
|
40
|
+
requirements:
|
41
|
+
- - ">="
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: 0.0.1
|
44
|
+
version:
|
35
45
|
description: MerbAdmin is a Merb plugin that provides an easy-to-use interface for managing your data.
|
36
46
|
email: sferik@gmail.com
|
37
47
|
executables: []
|
@@ -171,7 +181,7 @@ files:
|
|
171
181
|
- spec/requests/main_spec.rb
|
172
182
|
- spec/spec_helper.rb
|
173
183
|
has_rdoc: true
|
174
|
-
homepage: http://
|
184
|
+
homepage: http://github.com/sferik/merb-admin
|
175
185
|
licenses: []
|
176
186
|
|
177
187
|
post_install_message: |
|