ammeter 0.2.6 → 0.2.7

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore CHANGED
@@ -4,7 +4,6 @@ pkg
4
4
  vendor
5
5
  .bundle
6
6
  *.gem
7
- Gemfile
8
7
  Gemfile.lock
9
8
  gemfiles/*.lock
10
9
  .rvmrc
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in rspec-rails-generator-specs.gemspec
4
+ gemspec
data/History.md CHANGED
@@ -1,5 +1,12 @@
1
1
  ## Ammeter release history
2
2
 
3
+ ### 0.2.7 / 2012-07-05
4
+
5
+ [full changelog](https://github.com/alexrothenberg/ammeter/compare/v0.2.6...v0.2.7)
6
+
7
+ * Fixed issue #13 - Railtie initializer preventing devise from loading
8
+ * Fixed issue #12 - Only load_generators if we Rails is available. Regression introduced in 0.2.6
9
+
3
10
  ### 0.2.6 / 2012-06-28
4
11
 
5
12
  [full changelog](https://github.com/alexrothenberg/ammeter/compare/v0.2.5...v0.2.6)
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # Ammeter [![Build Status](https://secure.travis-ci.org/alexrothenberg/ammeter.png)](http://travis-ci.org/alexrothenberg/ammeter)
1
+ # Ammeter [![Build Status](https://secure.travis-ci.org/alexrothenberg/ammeter.png)](http://travis-ci.org/alexrothenberg/ammeter) [![Code Climate](https://codeclimate.com/badge.png)](https://codeclimate.com/github/alexrothenberg/ammeter)
2
2
 
3
3
  A gem that makes it easy to write specs for your Rails 3 Generators.
4
4
 
data/Rakefile CHANGED
@@ -18,31 +18,63 @@ end
18
18
 
19
19
  Cucumber::Rake::Task.new(:cucumber)
20
20
 
21
- # for cucumber features that create a sample project
22
- def in_example_app(command)
23
- Dir.chdir("./tmp/example_app/") do
24
- Bundler.clean_system command
21
+ task :ensure_bundler_11 do
22
+ raise 'Bundler 1.1 is a development dependency to build ammeter. Please upgrade bundler.' unless Bundler::VERSION >= '1.1'
23
+ end
24
+
25
+
26
+ def create_gem(gem_name)
27
+ template_folder = "features/templates/#{gem_name}"
28
+
29
+ Dir.chdir("./tmp") do
30
+ sh "bundle gem #{gem_name}"
31
+ end
32
+ sh "cp '#{template_folder}/Gemfile' tmp/#{gem_name}"
33
+ sh "cp '#{template_folder}/#{gem_name}.gemspec' tmp/#{gem_name}"
34
+ sh "cp '#{template_folder}/Rakefile' tmp/#{gem_name}"
35
+ sh "mkdir tmp/#{gem_name}/spec"
36
+ sh "cp '#{template_folder}/spec/spec_helper.rb' tmp/#{gem_name}/spec"
37
+ Dir.chdir("./tmp/#{gem_name}") do
38
+ Bundler.clean_system 'bundle install'
25
39
  end
26
40
  end
41
+
27
42
  namespace :generate do
28
43
  desc "generate a fresh app with rspec installed"
29
- task :app do |t|
30
- raise 'Bundler 1.1 is a development dependency to build ammeter. Please upgrade bundler.' unless Bundler::VERSION >= '1.1'
31
-
44
+ task :app => :ensure_bundler_11 do |t|
32
45
  sh "bundle exec rails new ./tmp/example_app -m 'features/templates/generate_example_app.rb' --skip-test-unit"
33
46
  sh "cp 'features/templates/rspec.rake' ./tmp/example_app/lib/tasks"
34
- in_example_app 'rake db:migrate'
35
- in_example_app 'rails g rspec:install'
36
- in_example_app 'bundle install'
47
+ Dir.chdir("./tmp/example_app/") do
48
+ Bundler.clean_system 'rake db:migrate'
49
+ Bundler.clean_system 'rails g rspec:install'
50
+ Bundler.clean_system 'bundle install'
51
+ end
52
+ end
53
+
54
+ desc "generate a fresh gem that depends on railties"
55
+ task :railties_gem => :ensure_bundler_11 do |t|
56
+ create_gem('my_railties_gem')
57
+ end
58
+
59
+ desc "generate a fresh gem that depends on rails"
60
+ task :rails_gem => :ensure_bundler_11 do |t|
61
+ create_gem('my_rails_gem')
37
62
  end
38
63
  end
39
64
 
65
+ task :generate => [:'generate:app', :'generate:railties_gem', :'generate:rails_gem']
66
+
40
67
  namespace :clobber do
41
68
  desc "clobber the generated app"
42
69
  task :app do
43
70
  rm_rf "tmp/example_app"
44
71
  end
72
+ task :gem do
73
+ rm_rf "tmp/my_railties_gem"
74
+ rm_rf "tmp/my_rails_gem"
75
+ end
45
76
  end
77
+ task :clobber => [:'clobber:app', :'clobber:gem']
46
78
 
47
- task :ci => [:spec, :'clobber:app', :'generate:app', :cucumber]
79
+ task :ci => [:spec, :clobber, :generate, :cucumber]
48
80
  task :default => :ci
@@ -0,0 +1,82 @@
1
+ Feature: Gems can contain generators
2
+
3
+ Within a Gem Rails may often not be loaded (but railties is)
4
+ We should still be able to write a spec for these generators
5
+
6
+ @railties_gem
7
+ Scenario: A generator with "railties" dependency
8
+ Given a file named "lib/generators/awesome/awesome_generator.rb" with:
9
+ """
10
+ class AwesomeGenerator < Rails::Generators::NamedBase
11
+ source_root File.expand_path('../templates', __FILE__)
12
+ class_option :super, :type => :boolean, :default => false
13
+
14
+ def create_awesomeness
15
+ template 'awesome.html', File.join('public', name, "#{"super_" if options[:super]}awesome.html")
16
+ end
17
+ end
18
+ """
19
+ And a file named "lib/generators/awesome/templates/awesome.html" with:
20
+ """
21
+ This is an awesome file
22
+ """
23
+ And a file named "spec/generators/awesome_generator_spec.rb" with:
24
+ """
25
+ require "spec_helper"
26
+ require 'generators/awesome/awesome_generator'
27
+
28
+ describe AwesomeGenerator do
29
+ before { run_generator %w(my_dir) }
30
+ describe 'public/my_dir/awesome.html' do
31
+ subject { file('public/my_dir/awesome.html') }
32
+ it { should exist }
33
+ it { should contain 'This is an awesome file' }
34
+ it { should_not contain 'This text is not in the file' }
35
+ end
36
+ end
37
+ """
38
+ When I run `rake spec --trace`
39
+ Then the output should contain "3 examples, 0 failures"
40
+
41
+ @rails_gem
42
+ Scenario: A generator that uses "hook_for"
43
+ Given a file named "lib/generators/resourceful/resourceful_generator.rb" with:
44
+ """
45
+ class ResourcefulGenerator < Rails::Generators::NamedBase
46
+ source_root File.expand_path('../templates', __FILE__)
47
+ class_option :super, :type => :boolean, :default => false
48
+
49
+ hook_for :orm, :in => :rails, :as => :model, :required => true
50
+
51
+ def create_resourceful_controller
52
+ template 'controller.rb', File.join('app/controllers', "#{plural_file_name}_controller.rb")
53
+ end
54
+ end
55
+ """
56
+ And a file named "lib/generators/resourceful/templates/controller.rb" with:
57
+ """
58
+ class <%= class_name.pluralize %>Controller < ResourcefulController
59
+ end
60
+ """
61
+ And a file named "spec/generators/resourceful_generator_spec.rb" with:
62
+ """
63
+ require "spec_helper"
64
+ require 'generators/resourceful/resourceful_generator'
65
+
66
+ describe ResourcefulGenerator do
67
+ before { run_generator %w(post) }
68
+ describe 'app/controller/posts_controller.rb' do
69
+ subject { file('app/controllers/posts_controller.rb') }
70
+ it { should exist }
71
+ it { should contain 'class PostsController < ResourcefulController' }
72
+ end
73
+
74
+ describe 'app/models/post.rb' do
75
+ subject { file('app/models/post.rb') }
76
+ it { should exist }
77
+ it { should contain 'class Post < ActiveRecord::Base' }
78
+ end
79
+ end
80
+ """
81
+ When I run `rake spec`
82
+ Then the output should contain "4 examples, 0 failures"
@@ -1,3 +1,4 @@
1
+ @example_app
1
2
  Feature: generator spec
2
3
 
3
4
  Generator specs live in spec/generators. In order to access
@@ -1,3 +1,4 @@
1
+ @example_app
1
2
  Feature: generator spec
2
3
 
3
4
  Generator specs live in spec/generators. In order to access
@@ -4,32 +4,41 @@ Before do
4
4
  @aruba_timeout_seconds = 10
5
5
  end
6
6
 
7
- def aruba_path(file_or_dir)
8
- File.expand_path("../../../#{file_or_dir.sub('example_app','aruba')}", __FILE__)
7
+ def aruba_path(file_or_dir, source_foldername)
8
+ File.expand_path("../../../#{file_or_dir.sub(source_foldername,'aruba')}", __FILE__)
9
9
  end
10
10
 
11
11
  def example_app_path(file_or_dir)
12
12
  File.expand_path("../../../#{file_or_dir}", __FILE__)
13
13
  end
14
14
 
15
- def write_symlink(file_or_dir)
15
+ def write_symlink(file_or_dir, source_foldername)
16
16
  source = example_app_path(file_or_dir)
17
- target = aruba_path(file_or_dir)
17
+ target = aruba_path(file_or_dir, source_foldername)
18
18
  system "ln -s #{source} #{target}"
19
19
  end
20
20
 
21
- Before do
21
+ def copy_to_aruba_from(gem_or_app_name)
22
22
  steps %Q{
23
23
  Given a directory named "spec"
24
24
  }
25
25
 
26
- Dir['tmp/example_app/*'].each do |file_or_dir|
27
- if !(file_or_dir =~ /spec$/)
28
- write_symlink(file_or_dir)
26
+ Dir["tmp/#{gem_or_app_name}/*"].each do |file_or_dir|
27
+ if !(file_or_dir =~ /\/spec$/)
28
+ write_symlink(file_or_dir, gem_or_app_name)
29
29
  end
30
30
  end
31
+ write_symlink("tmp/#{gem_or_app_name}/spec/spec_helper.rb", gem_or_app_name)
32
+ end
31
33
 
32
- ["spec/spec_helper.rb"].each do |file_or_dir|
33
- write_symlink("tmp/example_app/#{file_or_dir}")
34
- end
34
+ Before '@example_app' do
35
+ copy_to_aruba_from('example_app')
36
+ end
37
+
38
+ Before '@railties_gem' do
39
+ copy_to_aruba_from('my_railties_gem')
40
+ end
41
+
42
+ Before '@rails_gem' do
43
+ copy_to_aruba_from('my_rails_gem')
35
44
  end
@@ -0,0 +1,7 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in my_gem.gemspec
4
+ gemspec
5
+
6
+ # we cannot add a development dependency with a path to my_gem.gemspec
7
+ gem 'ammeter', :path => '../..'
@@ -0,0 +1,9 @@
1
+ #!/usr/bin/env rake
2
+ require "bundler/gem_tasks"
3
+
4
+ require 'rspec'
5
+ require 'rspec/core/rake_task'
6
+ desc "Run all examples"
7
+ RSpec::Core::RakeTask.new(:spec) do |t|
8
+ t.rspec_opts = %w[--color]
9
+ end
@@ -0,0 +1,20 @@
1
+ # -*- encoding: utf-8 -*-
2
+ require File.expand_path('../lib/my_rails_gem/version', __FILE__)
3
+
4
+ Gem::Specification.new do |gem|
5
+ gem.authors = ["Alex Rothenberg"]
6
+ gem.email = ["alex@alexrothenberg.com"]
7
+ gem.description = %q{TODO: Write a gem description}
8
+ gem.summary = %q{TODO: Write a gem summary}
9
+ gem.homepage = ""
10
+
11
+ gem.files = `git ls-files`.split($\)
12
+ gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
13
+ gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
14
+ gem.name = "my_rails_gem"
15
+ gem.require_paths = ["lib"]
16
+ gem.version = MyRailsGem::VERSION
17
+
18
+ gem.add_runtime_dependency 'rails', '>= 3.1'
19
+ gem.add_development_dependency 'rspec-rails', '>= 2.2'
20
+ end
@@ -0,0 +1,5 @@
1
+ require 'bundler/setup'
2
+ require 'rails/all'
3
+ require 'ammeter/init'
4
+
5
+ Bundler.require
@@ -0,0 +1,7 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in my_gem.gemspec
4
+ gemspec
5
+
6
+ # we cannot add a development dependency with a path to my_gem.gemspec
7
+ gem 'ammeter', :path => '../..'
@@ -0,0 +1,9 @@
1
+ #!/usr/bin/env rake
2
+ require "bundler/gem_tasks"
3
+
4
+ require 'rspec'
5
+ require 'rspec/core/rake_task'
6
+ desc "Run all examples"
7
+ RSpec::Core::RakeTask.new(:spec) do |t|
8
+ t.rspec_opts = %w[--color]
9
+ end
@@ -0,0 +1,20 @@
1
+ # -*- encoding: utf-8 -*-
2
+ require File.expand_path('../lib/my_railties_gem/version', __FILE__)
3
+
4
+ Gem::Specification.new do |gem|
5
+ gem.authors = ["Alex Rothenberg"]
6
+ gem.email = ["alex@alexrothenberg.com"]
7
+ gem.description = %q{TODO: Write a gem description}
8
+ gem.summary = %q{TODO: Write a gem summary}
9
+ gem.homepage = ""
10
+
11
+ gem.files = `git ls-files`.split($\)
12
+ gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
13
+ gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
14
+ gem.name = "my_railties_gem"
15
+ gem.require_paths = ["lib"]
16
+ gem.version = MyRailtiesGem::VERSION
17
+
18
+ gem.add_runtime_dependency 'railties', '>= 3.1'
19
+ gem.add_development_dependency 'rspec-rails', '>= 2.2'
20
+ end
@@ -0,0 +1,5 @@
1
+ require 'bundler/setup'
2
+ require 'rails'
3
+ require 'ammeter/init'
4
+
5
+ Bundler.require
@@ -1,4 +1,15 @@
1
1
  require 'ammeter/rspec/generator/example.rb'
2
2
  require 'ammeter/rspec/generator/matchers.rb'
3
3
 
4
- Rails.application.load_generators
4
+ if Rails.application.nil?
5
+ # We are in a gem so create test Rails app
6
+ module Ammeter
7
+ module TestApp
8
+ class Application < Rails::Application
9
+ config.root = File.dirname(__FILE__)
10
+ end
11
+ end
12
+ end
13
+ end
14
+
15
+ Rails.application.load_generators
@@ -1,6 +1,6 @@
1
1
  module Ammeter
2
2
  class Railtie < Rails::Railtie
3
- initializer 'my_engine.interact_with_routes', :after=> :disable_dependency_loading do |app|
3
+ initializer 'my_engine.interact_with_routes' do |app|
4
4
  require 'ammeter/init.rb'
5
5
  end
6
6
  end
@@ -1,3 +1,3 @@
1
1
  module Ammeter
2
- VERSION = "0.2.6"
2
+ VERSION = "0.2.7"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ammeter
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.6
4
+ version: 0.2.7
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-06-28 00:00:00.000000000 Z
12
+ date: 2012-07-05 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: railties
@@ -234,10 +234,19 @@ files:
234
234
  - README.md
235
235
  - Rakefile
236
236
  - ammeter.gemspec
237
+ - features/generator_in_a_gem.feature
237
238
  - features/generator_spec.feature
238
239
  - features/hooking_into_other_generators.feature
239
240
  - features/support/env.rb
240
241
  - features/templates/generate_example_app.rb
242
+ - features/templates/my_rails_gem/Gemfile
243
+ - features/templates/my_rails_gem/Rakefile
244
+ - features/templates/my_rails_gem/my_rails_gem.gemspec
245
+ - features/templates/my_rails_gem/spec/spec_helper.rb
246
+ - features/templates/my_railties_gem/Gemfile
247
+ - features/templates/my_railties_gem/Rakefile
248
+ - features/templates/my_railties_gem/my_railties_gem.gemspec
249
+ - features/templates/my_railties_gem/spec/spec_helper.rb
241
250
  - features/templates/rspec.rake
242
251
  - lib/.DS_Store
243
252
  - lib/ammeter.rb
@@ -270,7 +279,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
270
279
  version: '0'
271
280
  segments:
272
281
  - 0
273
- hash: -2181907763227366726
282
+ hash: 714039448379092360
274
283
  required_rubygems_version: !ruby/object:Gem::Requirement
275
284
  none: false
276
285
  requirements:
@@ -279,7 +288,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
279
288
  version: '0'
280
289
  segments:
281
290
  - 0
282
- hash: -2181907763227366726
291
+ hash: 714039448379092360
283
292
  requirements: []
284
293
  rubyforge_project:
285
294
  rubygems_version: 1.8.24
@@ -287,10 +296,19 @@ signing_key:
287
296
  specification_version: 3
288
297
  summary: Write specs for your Rails 3+ generators
289
298
  test_files:
299
+ - features/generator_in_a_gem.feature
290
300
  - features/generator_spec.feature
291
301
  - features/hooking_into_other_generators.feature
292
302
  - features/support/env.rb
293
303
  - features/templates/generate_example_app.rb
304
+ - features/templates/my_rails_gem/Gemfile
305
+ - features/templates/my_rails_gem/Rakefile
306
+ - features/templates/my_rails_gem/my_rails_gem.gemspec
307
+ - features/templates/my_rails_gem/spec/spec_helper.rb
308
+ - features/templates/my_railties_gem/Gemfile
309
+ - features/templates/my_railties_gem/Rakefile
310
+ - features/templates/my_railties_gem/my_railties_gem.gemspec
311
+ - features/templates/my_railties_gem/spec/spec_helper.rb
294
312
  - features/templates/rspec.rake
295
313
  - spec/ammeter/rspec/generator/example/generator_example_group_spec.rb
296
314
  - spec/ammeter/rspec/generator/matchers/be_a_migration_spec.rb