dm-gen 0.4.2 → 0.5.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +4 -0
- data/CHANGELOG.rdoc +6 -0
- data/LICENSE +1 -1
- data/README.rdoc +2 -3
- data/Rakefile +53 -0
- data/VERSION +1 -0
- data/dm-gen.gemspec +105 -0
- data/lib/dm-gen/generators/adapter.rb +3 -30
- data/lib/dm-gen/generators/is.rb +2 -26
- data/lib/dm-gen/generators/plugin_generator.rb +44 -0
- data/lib/dm-gen/templates/adapter/.gitignore +35 -0
- data/lib/dm-gen/templates/adapter/Gemfile +82 -0
- data/lib/dm-gen/templates/adapter/LICENSE +1 -1
- data/lib/dm-gen/templates/adapter/README.rdoc +3 -0
- data/lib/dm-gen/templates/adapter/Rakefile +17 -24
- data/lib/dm-gen/templates/adapter/lib/%gem_name%.rb +1 -0
- data/lib/dm-gen/templates/adapter/lib/{%adapter_file%.rb → %gem_name%/adapter.rb} +8 -17
- data/lib/dm-gen/templates/adapter/lib/%gem_name%/spec/setup.rb +21 -0
- data/lib/dm-gen/templates/adapter/spec/adapter_spec.rb +21 -0
- data/lib/dm-gen/templates/adapter/spec/rcov.opts +5 -0
- data/lib/dm-gen/templates/adapter/spec/spec.opts +2 -0
- data/lib/dm-gen/templates/adapter/spec/spec_helper.rb +4 -9
- data/lib/dm-gen/templates/adapter/tasks/local_gemfile.rake +18 -0
- data/lib/dm-gen/templates/adapter/tasks/spec.rake +38 -0
- data/lib/dm-gen/templates/adapter/tasks/yard.rake +9 -0
- data/lib/dm-gen/templates/adapter/tasks/yardstick.rake +19 -0
- data/lib/dm-gen/templates/is/.gitignore +36 -0
- data/lib/dm-gen/templates/is/Gemfile +143 -0
- data/lib/dm-gen/templates/is/LICENSE +1 -1
- data/lib/dm-gen/templates/is/README.rdoc +2 -0
- data/lib/dm-gen/templates/is/Rakefile +16 -24
- data/lib/dm-gen/templates/is/VERSION +1 -0
- data/lib/dm-gen/templates/is/lib/%gem_name%.rb +1 -8
- data/lib/dm-gen/templates/is/lib/%gem_name%/is/%name%.rb +30 -0
- data/lib/dm-gen/templates/is/spec/integration/%name%_spec.rb +16 -0
- data/lib/dm-gen/templates/is/spec/rcov.opts +6 -0
- data/lib/dm-gen/templates/is/spec/spec.opts +3 -0
- data/lib/dm-gen/templates/is/spec/spec_helper.rb +7 -21
- data/lib/dm-gen/templates/is/tasks/ci.rake +1 -0
- data/lib/dm-gen/templates/is/tasks/local_gemfile.rake +18 -0
- data/lib/dm-gen/templates/is/tasks/metrics.rake +36 -0
- data/lib/dm-gen/templates/is/tasks/spec.rake +38 -0
- data/lib/dm-gen/templates/is/tasks/yard.rake +9 -0
- data/lib/dm-gen/templates/is/tasks/yardstick.rake +19 -0
- data/lib/dm-gen/templates/one_file.rb +3 -2
- data/lib/dm_gen.rb +1 -1
- data/spec/adapter_spec.rb +34 -52
- data/spec/is_plugin_spec.rb +13 -28
- metadata +59 -30
- data/lib/dm-gen/templates/adapter/History.txt +0 -4
- data/lib/dm-gen/templates/adapter/Manifest.txt +0 -1
- data/lib/dm-gen/templates/adapter/README.txt +0 -3
- data/lib/dm-gen/templates/adapter/TODO +0 -0
- data/lib/dm-gen/templates/adapter/lib/%adapter_file%/version.rb +0 -5
- data/lib/dm-gen/templates/adapter/spec/integration/%adapter_file%_spec.rb +0 -36
- data/lib/dm-gen/templates/adapter/tasks/install.rb +0 -13
- data/lib/dm-gen/templates/adapter/tasks/spec.rb +0 -25
- data/lib/dm-gen/templates/is/History.txt +0 -4
- data/lib/dm-gen/templates/is/Manifest.txt +0 -1
- data/lib/dm-gen/templates/is/README.txt +0 -3
- data/lib/dm-gen/templates/is/TODO +0 -0
- data/lib/dm-gen/templates/is/lib/%gem_name%/is/%snake_name%.rb +0 -38
- data/lib/dm-gen/templates/is/lib/%gem_name%/is/version.rb +0 -7
- data/lib/dm-gen/templates/is/spec/integration/%snake_name%_spec.rb +0 -8
- data/lib/dm-gen/templates/is/tasks/install.rb +0 -13
- data/lib/dm-gen/templates/is/tasks/spec.rb +0 -25
@@ -1,30 +1,22 @@
|
|
1
|
-
|
2
|
-
require '
|
3
|
-
require 'hoe'
|
1
|
+
begin
|
2
|
+
require 'jeweler'
|
4
3
|
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
4
|
+
Jeweler::Tasks.new do |gem|
|
5
|
+
gem.name = '<%= gem_name %>'
|
6
|
+
gem.summary = 'SUMMARY'
|
7
|
+
gem.description = gem.summary
|
8
|
+
gem.email = 'EMAIL'
|
9
|
+
gem.homepage = 'http://github.com/USERNAME/<%= gem_name %>'
|
10
|
+
gem.authors = [ 'NAME' ]
|
9
11
|
|
10
|
-
|
12
|
+
gem.add_dependency 'dm-core', '~> <%= DMGen::DM_VERSION %>'
|
11
13
|
|
12
|
-
|
13
|
-
|
14
|
-
GEM_VERSION = DataMapper::Is::<%= class_name %>::VERSION
|
14
|
+
gem.add_development_dependency 'rspec', '~> 1.3'
|
15
|
+
end
|
15
16
|
|
16
|
-
|
17
|
-
p.developer('John Doe', 'john [a] doe [d] com')
|
18
|
-
|
19
|
-
p.description = 'A DataMapper plugin that ...'
|
20
|
-
p.summary = 'A DataMapper plugin that ...'
|
21
|
-
p.url = 'http://github.com/USERNAME/<%= gem_name %>'
|
22
|
-
|
23
|
-
p.clean_globs |= %w[ log pkg coverage ]
|
24
|
-
p.spec_extras = { :has_rdoc => true, :extra_rdoc_files => %w[ README.txt LICENSE TODO History.txt ] }
|
25
|
-
|
26
|
-
p.extra_deps << ['dm-core', "~> <%= DMGen::DM_VERSION"]
|
17
|
+
Jeweler::GemcutterTasks.new
|
27
18
|
|
19
|
+
FileList['tasks/**/*.rake'].each { |task| import task }
|
20
|
+
rescue LoadError
|
21
|
+
puts 'Jeweler (or a dependency) not available. Install it with: gem install jeweler'
|
28
22
|
end
|
29
|
-
|
30
|
-
Pathname.glob(ROOT.join('tasks/**/*.rb').to_s).each { |f| require f }
|
@@ -0,0 +1 @@
|
|
1
|
+
1.0.0.rc2
|
@@ -1,8 +1 @@
|
|
1
|
-
|
2
|
-
# require 'dm-core' - this can probably be assumed.
|
3
|
-
|
4
|
-
# Require plugin-files
|
5
|
-
require '<%= gem_name %>/is/<%= snake_name %>.rb'
|
6
|
-
|
7
|
-
# Include the plugin in DM models
|
8
|
-
DataMapper::Model.append_extensions DataMapper::Is::<%= class_name %>
|
1
|
+
require '<%= gem_name %>/is/<%= name %>'
|
@@ -0,0 +1,30 @@
|
|
1
|
+
require 'dm-core'
|
2
|
+
|
3
|
+
module DataMapper
|
4
|
+
module Is
|
5
|
+
module <%= class_name %>
|
6
|
+
|
7
|
+
# method for making your model a <%= name %>
|
8
|
+
#
|
9
|
+
# @api public
|
10
|
+
def is_<%= name %>(options={})
|
11
|
+
|
12
|
+
extend DataMapper::Is::<%= class_name %>::ClassMethods
|
13
|
+
include DataMapper::Is::<%= class_name %>::InstanceMethods
|
14
|
+
|
15
|
+
# other setup goes here!
|
16
|
+
|
17
|
+
|
18
|
+
end # is_list
|
19
|
+
|
20
|
+
module ClassMethods
|
21
|
+
end
|
22
|
+
|
23
|
+
module InstanceMethods
|
24
|
+
end # InstanceMethods
|
25
|
+
end # <%= class_name %>
|
26
|
+
end # Is
|
27
|
+
|
28
|
+
Model.append_extensions(Is::<%= class_name %>)
|
29
|
+
|
30
|
+
end # DataMapper
|
@@ -1,26 +1,12 @@
|
|
1
|
-
require '
|
2
|
-
require '
|
1
|
+
require 'dm-core/spec/setup'
|
2
|
+
require 'dm-core/spec/lib/adapter_helpers'
|
3
3
|
|
4
|
-
|
5
|
-
require '
|
4
|
+
require '<%= gem_name %>'
|
5
|
+
require 'dm-migrations'
|
6
6
|
|
7
|
-
|
7
|
+
DataMapper::Spec.setup
|
8
8
|
|
9
|
-
def load_driver(name, default_uri)
|
10
|
-
return false if ENV['ADAPTER'] != name.to_s
|
11
9
|
|
12
|
-
|
13
|
-
|
14
|
-
DataMapper::Repository.adapters[:default] = DataMapper::Repository.adapters[name]
|
15
|
-
true
|
16
|
-
rescue LoadError => e
|
17
|
-
warn "Could not load do_#{name}: #{e}"
|
18
|
-
false
|
19
|
-
end
|
10
|
+
Spec::Runner.configure do |config|
|
11
|
+
config.extend(DataMapper::Spec::Adapters::Helpers)
|
20
12
|
end
|
21
|
-
|
22
|
-
ENV['ADAPTER'] ||= 'sqlite3'
|
23
|
-
|
24
|
-
HAS_SQLITE3 = load_driver(:sqlite3, 'sqlite3::memory:')
|
25
|
-
HAS_MYSQL = load_driver(:mysql, 'mysql://localhost/dm_core_test')
|
26
|
-
HAS_POSTGRES = load_driver(:postgres, 'postgres://postgres@localhost/dm_core_test')
|
@@ -0,0 +1 @@
|
|
1
|
+
task :ci => [ :verify_measurements, 'metrics:all' ]
|
@@ -0,0 +1,18 @@
|
|
1
|
+
desc "Support bundling from local source code (allows BUNDLE_GEMFILE=Gemfile.local bundle foo)"
|
2
|
+
task :local_gemfile do |t|
|
3
|
+
|
4
|
+
root = Pathname(__FILE__).dirname.parent
|
5
|
+
datamapper = root.parent
|
6
|
+
|
7
|
+
source_regex = /DATAMAPPER = 'git:\/\/github.com\/datamapper'/
|
8
|
+
gem_source_regex = /:git => \"#\{DATAMAPPER\}\/(.+?)(?:\.git)?\"/
|
9
|
+
|
10
|
+
root.join('Gemfile.local').open('w') do |f|
|
11
|
+
root.join('Gemfile').open.each do |line|
|
12
|
+
line.sub!(source_regex, "DATAMAPPER = '#{datamapper}'")
|
13
|
+
line.sub!(gem_source_regex, ':path => "#{DATAMAPPER}/\1"')
|
14
|
+
f.puts line
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
begin
|
2
|
+
require 'metric_fu'
|
3
|
+
rescue LoadError
|
4
|
+
namespace :metrics do
|
5
|
+
task :all do
|
6
|
+
abort 'metric_fu is not available. In order to run metrics:all, you must: gem install metric_fu'
|
7
|
+
end
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
begin
|
12
|
+
require 'reek/adapters/rake_task'
|
13
|
+
|
14
|
+
Reek::RakeTask.new do |t|
|
15
|
+
t.fail_on_error = true
|
16
|
+
t.verbose = false
|
17
|
+
t.source_files = 'lib/**/*.rb'
|
18
|
+
end
|
19
|
+
rescue LoadError
|
20
|
+
task :reek do
|
21
|
+
abort 'Reek is not available. In order to run reek, you must: gem install reek'
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
begin
|
26
|
+
require 'roodi'
|
27
|
+
require 'roodi_task'
|
28
|
+
|
29
|
+
RoodiTask.new do |t|
|
30
|
+
t.verbose = false
|
31
|
+
end
|
32
|
+
rescue LoadError
|
33
|
+
task :roodi do
|
34
|
+
abort 'Roodi is not available. In order to run roodi, you must: gem install roodi'
|
35
|
+
end
|
36
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
spec_defaults = lambda do |spec|
|
2
|
+
spec.pattern = 'spec/**/*_spec.rb'
|
3
|
+
spec.libs << 'lib' << 'spec'
|
4
|
+
spec.spec_opts << '--options' << 'spec/spec.opts'
|
5
|
+
end
|
6
|
+
|
7
|
+
begin
|
8
|
+
require 'spec/rake/spectask'
|
9
|
+
|
10
|
+
Spec::Rake::SpecTask.new(:spec, &spec_defaults)
|
11
|
+
rescue LoadError
|
12
|
+
task :spec do
|
13
|
+
abort 'rspec is not available. In order to run spec, you must: gem install rspec'
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
begin
|
18
|
+
require 'rcov'
|
19
|
+
require 'spec/rake/verify_rcov'
|
20
|
+
|
21
|
+
Spec::Rake::SpecTask.new(:rcov) do |rcov|
|
22
|
+
spec_defaults.call(rcov)
|
23
|
+
rcov.rcov = true
|
24
|
+
rcov.rcov_opts = File.read('spec/rcov.opts').split(/\s+/)
|
25
|
+
end
|
26
|
+
|
27
|
+
RCov::VerifyTask.new(:verify_rcov => :rcov) do |rcov|
|
28
|
+
rcov.threshold = 100
|
29
|
+
end
|
30
|
+
rescue LoadError
|
31
|
+
%w[ rcov verify_rcov ].each do |name|
|
32
|
+
task name do
|
33
|
+
abort "rcov is not available. In order to run #{name}, you must: gem install rcov"
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
task :default => :spec
|
@@ -0,0 +1,19 @@
|
|
1
|
+
begin
|
2
|
+
require 'pathname'
|
3
|
+
require 'yardstick/rake/measurement'
|
4
|
+
require 'yardstick/rake/verify'
|
5
|
+
|
6
|
+
# yardstick_measure task
|
7
|
+
Yardstick::Rake::Measurement.new
|
8
|
+
|
9
|
+
# verify_measurements task
|
10
|
+
Yardstick::Rake::Verify.new do |verify|
|
11
|
+
verify.threshold = 100
|
12
|
+
end
|
13
|
+
rescue LoadError
|
14
|
+
%w[ yardstick_measure verify_measurements ].each do |name|
|
15
|
+
task name.to_s do
|
16
|
+
abort "Yardstick is not available. In order to run #{name}, you must: gem install yardstick"
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -3,10 +3,11 @@
|
|
3
3
|
# A one file test to show ...
|
4
4
|
require 'rubygems'
|
5
5
|
require 'dm-core'
|
6
|
+
require 'dm-migrations'
|
6
7
|
|
7
8
|
|
8
9
|
# setup the logger
|
9
|
-
DataMapper::Logger.new(
|
10
|
+
DataMapper::Logger.new($stdout, :debug)
|
10
11
|
|
11
12
|
# connect to the DB
|
12
13
|
DataMapper.setup(:default, 'sqlite3::memory:')
|
@@ -21,7 +22,7 @@ class <%= model_name %>
|
|
21
22
|
<% end %>
|
22
23
|
end
|
23
24
|
|
24
|
-
DataMapper.auto_migrate!
|
25
|
+
DataMapper.finalize.auto_migrate!
|
25
26
|
|
26
27
|
# put the code here!
|
27
28
|
|
data/lib/dm_gen.rb
CHANGED
data/spec/adapter_spec.rb
CHANGED
@@ -5,95 +5,77 @@ describe "DMGen::Adapter" do
|
|
5
5
|
@generator = DMGen::Adapter.new('/tmp', {}, 'awesome')
|
6
6
|
end
|
7
7
|
|
8
|
+
|
9
|
+
describe "renders all templates without errors" do
|
10
|
+
DMGen::Adapter.new('/tmp', {}, 'awesome').templates.each do |template|
|
11
|
+
it "should render '#{template.name}' without raising" do
|
12
|
+
lambda { template.render }.should.not.raise(Exception)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
8
17
|
# basic file creation.
|
9
18
|
it "creates a Rakefile" do
|
10
19
|
@generator.should create('/tmp/dm-awesome-adapter/Rakefile')
|
11
20
|
end
|
12
21
|
it "creates the lib folder layout" do
|
13
|
-
@generator.should create('/tmp/dm-awesome-adapter/lib/
|
14
|
-
@generator.should create('/tmp/dm-awesome-adapter/lib/
|
22
|
+
@generator.should create('/tmp/dm-awesome-adapter/lib/dm-awesome-adapter.rb')
|
23
|
+
@generator.should create('/tmp/dm-awesome-adapter/lib/dm-awesome-adapter/adapter.rb')
|
24
|
+
@generator.should create('/tmp/dm-awesome-adapter/lib/dm-awesome-adapter/spec/setup.rb')
|
15
25
|
end
|
16
26
|
it "creates the spec folder layout" do
|
17
|
-
@generator.should create('/tmp/dm-awesome-adapter/spec/
|
27
|
+
@generator.should create('/tmp/dm-awesome-adapter/spec/adapter_spec.rb')
|
18
28
|
@generator.should create('/tmp/dm-awesome-adapter/spec/spec.opts')
|
29
|
+
@generator.should create('/tmp/dm-awesome-adapter/spec/rcov.opts')
|
19
30
|
@generator.should create('/tmp/dm-awesome-adapter/spec/spec_helper.rb')
|
20
31
|
end
|
21
32
|
it "creates a README" do
|
22
|
-
@generator.should create('/tmp/dm-awesome-adapter/README.
|
23
|
-
end
|
24
|
-
it "creates a History file" do
|
25
|
-
@generator.should create('/tmp/dm-awesome-adapter/History.txt')
|
33
|
+
@generator.should create('/tmp/dm-awesome-adapter/README.rdoc')
|
26
34
|
end
|
27
35
|
it "creates a LICENSE" do
|
28
36
|
@generator.should create('/tmp/dm-awesome-adapter/LICENSE')
|
29
37
|
end
|
30
|
-
it "creates a
|
31
|
-
@generator.should create('/tmp/dm-awesome-adapter/
|
38
|
+
it "creates a Gemfile" do
|
39
|
+
@generator.should create('/tmp/dm-awesome-adapter/Gemfile')
|
32
40
|
end
|
33
|
-
it "creates a
|
34
|
-
@generator.should create('/tmp/dm-awesome-adapter
|
41
|
+
it "creates a .gitignore" do
|
42
|
+
@generator.should create('/tmp/dm-awesome-adapter/.gitignore')
|
35
43
|
end
|
36
44
|
it "creates support tasks" do
|
37
|
-
@generator.should create('/tmp/dm-awesome-adapter/tasks/
|
38
|
-
@generator.should create('/tmp/dm-awesome-adapter/tasks/
|
45
|
+
@generator.should create('/tmp/dm-awesome-adapter/tasks/local_gemfile.rake')
|
46
|
+
@generator.should create('/tmp/dm-awesome-adapter/tasks/spec.rake')
|
47
|
+
@generator.should create('/tmp/dm-awesome-adapter/tasks/yard.rake')
|
48
|
+
@generator.should create('/tmp/dm-awesome-adapter/tasks/yardstick.rake')
|
39
49
|
end
|
40
50
|
|
41
|
-
describe "
|
51
|
+
describe "spec/spec_helper.rb" do
|
42
52
|
before do
|
43
|
-
@template = @generator.template(:
|
53
|
+
@template = @generator.template(:spec_spec_helper_rb)
|
44
54
|
@result = @template.render
|
45
55
|
end
|
46
56
|
|
47
|
-
it "contains itself" do
|
48
|
-
@result.should.be.a.match(/^Manifest.txt$/)
|
49
|
-
end
|
50
|
-
|
51
|
-
it "is the sorted list of its contents" do
|
52
|
-
@result.split("\n").sort.should == @result.split("\n")
|
53
|
-
end
|
54
57
|
end
|
55
58
|
|
56
|
-
describe "
|
59
|
+
describe "Rakefile" do
|
57
60
|
before do
|
58
|
-
@template = @generator.template(:
|
59
|
-
|
61
|
+
@template = @generator.template(:rakefile)
|
62
|
+
@result = @template.render
|
60
63
|
end
|
61
64
|
|
62
|
-
it "
|
63
|
-
@result.should.include(
|
64
|
-
module DataMapper
|
65
|
-
module AwesomeAdapter
|
66
|
-
VERSION = '0.0.1'
|
67
|
-
end
|
68
|
-
end
|
69
|
-
eos
|
65
|
+
it "includes an approriate dependency on dm-core" do
|
66
|
+
@result.should.include("gem.add_dependency 'dm-core', '~> #{DMGen::DM_VERSION}'")
|
70
67
|
end
|
71
68
|
end
|
72
69
|
|
73
|
-
describe "
|
70
|
+
describe "LICENSE" do
|
74
71
|
before do
|
75
|
-
@template = @generator.template(:
|
72
|
+
@template = @generator.template(:license)
|
76
73
|
@result = @template.render
|
77
74
|
end
|
78
75
|
|
79
|
-
it "
|
80
|
-
@result.should.include(
|
81
|
-
end
|
82
|
-
|
83
|
-
it "requires the adapter library" do
|
84
|
-
@result.should.be.a.match(/require .*lib\/awesome_adapter/)
|
85
|
-
end
|
86
|
-
|
87
|
-
end
|
88
|
-
|
89
|
-
describe "Rakefile" do
|
90
|
-
before do
|
91
|
-
@template = @generator.template(:rakefile)
|
92
|
-
@result = @template.render
|
76
|
+
it "has the correct copyright declaration" do
|
77
|
+
@result.should.include("Copyright (c) #{Time.now.year} NAME")
|
93
78
|
end
|
94
79
|
|
95
|
-
it "requires the version file" do
|
96
|
-
@result.should.include(%q{require ROOT + 'lib/awesome_adapter/version'})
|
97
|
-
end
|
98
80
|
end
|
99
81
|
end
|