merb-admin 0.4.9 → 0.5.0
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.
- 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: |
|