api_controller 0.1.2 → 0.2.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/Gemfile +1 -6
- data/Gemfile.lock +12 -2
- data/README.rdoc +6 -4
- data/VERSION +1 -1
- data/api_controller.gemspec +7 -12
- data/features/routes.feature +29 -0
- data/lib/generators/api_controller/api_controller_generator.rb +9 -4
- metadata +29 -29
- data/test/helper.rb +0 -19
- data/test/test_api_controller.rb +0 -7
data/Gemfile
CHANGED
@@ -1,14 +1,9 @@
|
|
1
1
|
source "http://rubygems.org"
|
2
|
-
# Add dependencies required to use your gem here.
|
3
|
-
# Example:
|
4
|
-
# gem "activesupport", ">= 2.3.5"
|
5
2
|
|
6
|
-
# Add dependencies to develop your gem here.
|
7
|
-
# Include everything needed to run rake, tests, features, etc.
|
8
3
|
group :development do
|
9
|
-
gem "shoulda", ">= 0"
|
10
4
|
gem "bundler", "~> 1.0.0"
|
11
5
|
gem "jeweler", "~> 1.5.2"
|
12
6
|
gem "rcov", ">= 0"
|
13
7
|
gem "rails", ">= 3.0.0"
|
8
|
+
gem "cucumber", ">= 0.10.0"
|
14
9
|
end
|
data/Gemfile.lock
CHANGED
@@ -30,14 +30,24 @@ GEM
|
|
30
30
|
activesupport (3.0.3)
|
31
31
|
arel (2.0.8)
|
32
32
|
builder (2.1.2)
|
33
|
+
cucumber (0.10.0)
|
34
|
+
builder (>= 2.1.2)
|
35
|
+
diff-lcs (~> 1.1.2)
|
36
|
+
gherkin (~> 2.3.2)
|
37
|
+
json (~> 1.4.6)
|
38
|
+
term-ansicolor (~> 1.0.5)
|
39
|
+
diff-lcs (1.1.2)
|
33
40
|
erubis (2.6.6)
|
34
41
|
abstract (>= 1.0.0)
|
42
|
+
gherkin (2.3.3)
|
43
|
+
json (~> 1.4.6)
|
35
44
|
git (1.2.5)
|
36
45
|
i18n (0.5.0)
|
37
46
|
jeweler (1.5.2)
|
38
47
|
bundler (~> 1.0.0)
|
39
48
|
git (>= 1.2.5)
|
40
49
|
rake
|
50
|
+
json (1.4.6)
|
41
51
|
mail (2.2.15)
|
42
52
|
activesupport (>= 2.3.6)
|
43
53
|
i18n (>= 0.4.0)
|
@@ -65,7 +75,7 @@ GEM
|
|
65
75
|
thor (~> 0.14.4)
|
66
76
|
rake (0.8.7)
|
67
77
|
rcov (0.9.9)
|
68
|
-
|
78
|
+
term-ansicolor (1.0.5)
|
69
79
|
thor (0.14.6)
|
70
80
|
treetop (1.4.9)
|
71
81
|
polyglot (>= 0.3.1)
|
@@ -76,7 +86,7 @@ PLATFORMS
|
|
76
86
|
|
77
87
|
DEPENDENCIES
|
78
88
|
bundler (~> 1.0.0)
|
89
|
+
cucumber (>= 0.10.0)
|
79
90
|
jeweler (~> 1.5.2)
|
80
91
|
rails (>= 3.0.0)
|
81
92
|
rcov
|
82
|
-
shoulda
|
data/README.rdoc
CHANGED
@@ -14,13 +14,15 @@ generates:
|
|
14
14
|
== To do
|
15
15
|
|
16
16
|
* modularize test framework usage
|
17
|
-
* add proper requirements to all files so that everything works outside of a
|
18
|
-
rails project (and in different versions of rails)
|
17
|
+
* add proper requirements to all files so that everything works outside of a rails project (and in different versions of rails)
|
19
18
|
* make opinionated, robust api and test generation
|
20
19
|
* test!
|
21
|
-
* change the parameters for the command so that either the plural (people) or
|
22
|
-
class name (Person) can be used.
|
20
|
+
* change the parameters for the command so that either the plural (people) or class name (Person) can be used.
|
23
21
|
* use variable caching in generation methods (version)
|
22
|
+
* shorten generator name
|
23
|
+
* only make new routes if necessary
|
24
|
+
* default generator should be 'api' (generates test and controller); possibly add other generators (test, controller, barebones, etc.)
|
25
|
+
* properly insert routes
|
24
26
|
|
25
27
|
== Contributing to api_controller
|
26
28
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.2.0
|
data/api_controller.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{api_controller}
|
8
|
-
s.version = "0.
|
8
|
+
s.version = "0.2.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Cody Frazer"]
|
12
|
-
s.date = %q{2011-02-
|
12
|
+
s.date = %q{2011-02-18}
|
13
13
|
s.description = %q{Genarator for controllers dedicated to custom APIs.}
|
14
14
|
s.email = %q{cody.frazer@cph.org}
|
15
15
|
s.extra_rdoc_files = [
|
@@ -25,45 +25,40 @@ Gem::Specification.new do |s|
|
|
25
25
|
"Rakefile",
|
26
26
|
"VERSION",
|
27
27
|
"api_controller.gemspec",
|
28
|
+
"features/routes.feature",
|
28
29
|
"lib/generators/api_controller/USAGE",
|
29
30
|
"lib/generators/api_controller/api_controller_generator.rb",
|
30
31
|
"lib/generators/api_controller/templates/api_controller.rb",
|
31
|
-
"lib/generators/api_controller/templates/api_controller_test.rb"
|
32
|
-
"test/helper.rb",
|
33
|
-
"test/test_api_controller.rb"
|
32
|
+
"lib/generators/api_controller/templates/api_controller_test.rb"
|
34
33
|
]
|
35
34
|
s.homepage = %q{http://github.com/crfrazer/api_controller}
|
36
35
|
s.licenses = ["MIT"]
|
37
36
|
s.require_paths = ["lib"]
|
38
37
|
s.rubygems_version = %q{1.5.2}
|
39
38
|
s.summary = %q{Genarator for controllers dedicated to custom APIs.}
|
40
|
-
s.test_files = [
|
41
|
-
"test/helper.rb",
|
42
|
-
"test/test_api_controller.rb"
|
43
|
-
]
|
44
39
|
|
45
40
|
if s.respond_to? :specification_version then
|
46
41
|
s.specification_version = 3
|
47
42
|
|
48
43
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
49
|
-
s.add_development_dependency(%q<shoulda>, [">= 0"])
|
50
44
|
s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
|
51
45
|
s.add_development_dependency(%q<jeweler>, ["~> 1.5.2"])
|
52
46
|
s.add_development_dependency(%q<rcov>, [">= 0"])
|
53
47
|
s.add_development_dependency(%q<rails>, [">= 3.0.0"])
|
48
|
+
s.add_development_dependency(%q<cucumber>, [">= 0.10.0"])
|
54
49
|
else
|
55
|
-
s.add_dependency(%q<shoulda>, [">= 0"])
|
56
50
|
s.add_dependency(%q<bundler>, ["~> 1.0.0"])
|
57
51
|
s.add_dependency(%q<jeweler>, ["~> 1.5.2"])
|
58
52
|
s.add_dependency(%q<rcov>, [">= 0"])
|
59
53
|
s.add_dependency(%q<rails>, [">= 3.0.0"])
|
54
|
+
s.add_dependency(%q<cucumber>, [">= 0.10.0"])
|
60
55
|
end
|
61
56
|
else
|
62
|
-
s.add_dependency(%q<shoulda>, [">= 0"])
|
63
57
|
s.add_dependency(%q<bundler>, ["~> 1.0.0"])
|
64
58
|
s.add_dependency(%q<jeweler>, ["~> 1.5.2"])
|
65
59
|
s.add_dependency(%q<rcov>, [">= 0"])
|
66
60
|
s.add_dependency(%q<rails>, [">= 3.0.0"])
|
61
|
+
s.add_dependency(%q<cucumber>, [">= 0.10.0"])
|
67
62
|
end
|
68
63
|
end
|
69
64
|
|
@@ -0,0 +1,29 @@
|
|
1
|
+
Feature: API Generator
|
2
|
+
In order to allow access to data
|
3
|
+
As a rails developer
|
4
|
+
I want to generate a controller, routes, and a test for that controller
|
5
|
+
|
6
|
+
Scenario: Generate standard API for resource
|
7
|
+
Given a new rails app
|
8
|
+
When I run "rails g scaffold person"
|
9
|
+
And I run "rails g api people"
|
10
|
+
Then I should see the following files
|
11
|
+
| app/controllers/api/v1/people_api_controller.rb |
|
12
|
+
| test/functional/api/v1/people_api_test.rb |
|
13
|
+
And I should see "resources :people" in file "config/routes.rb"
|
14
|
+
|
15
|
+
Scenario: Generate API with a different version
|
16
|
+
|
17
|
+
Scenario: Generate API with Test::Unit tests
|
18
|
+
|
19
|
+
Scenario: Generate API with cucumber tests
|
20
|
+
|
21
|
+
Scenario: Generate API with shoulda tests
|
22
|
+
|
23
|
+
Scenario: Generate blank API
|
24
|
+
|
25
|
+
Scenario: Generate API controller
|
26
|
+
|
27
|
+
Scenario: Generate API test
|
28
|
+
|
29
|
+
Scenario: Generate API routes
|
@@ -46,14 +46,19 @@ class ApiControllerGenerator < Rails::Generators::Base
|
|
46
46
|
File.open("#{RAILS_ROOT}/config/routes.rb", "r+") do |file|
|
47
47
|
file.each do |line|
|
48
48
|
final << line
|
49
|
-
if line =~
|
49
|
+
if line =~ /\w+::Application.routes.draw/
|
50
50
|
final << <<-ROUTES
|
51
|
-
|
52
|
-
|
53
|
-
|
51
|
+
|
52
|
+
namespace :api do
|
53
|
+
namespace v#{version} do
|
54
|
+
resources :#{model}, :controller => '#{model}_api', :only => [:index, :show, :create, :update, :destroy]
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
54
58
|
ROUTES
|
55
59
|
end
|
56
60
|
end
|
61
|
+
file.pos = 0
|
57
62
|
file.puts final
|
58
63
|
end
|
59
64
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: api_controller
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 23
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
-
- 1
|
9
8
|
- 2
|
10
|
-
|
9
|
+
- 0
|
10
|
+
version: 0.2.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Cody Frazer
|
@@ -15,27 +15,13 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-02-
|
18
|
+
date: 2011-02-18 00:00:00 -06:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
22
22
|
prerelease: false
|
23
23
|
type: :development
|
24
24
|
requirement: &id001 !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
|
-
requirements:
|
27
|
-
- - ">="
|
28
|
-
- !ruby/object:Gem::Version
|
29
|
-
hash: 3
|
30
|
-
segments:
|
31
|
-
- 0
|
32
|
-
version: "0"
|
33
|
-
name: shoulda
|
34
|
-
version_requirements: *id001
|
35
|
-
- !ruby/object:Gem::Dependency
|
36
|
-
prerelease: false
|
37
|
-
type: :development
|
38
|
-
requirement: &id002 !ruby/object:Gem::Requirement
|
39
25
|
none: false
|
40
26
|
requirements:
|
41
27
|
- - ~>
|
@@ -47,11 +33,11 @@ dependencies:
|
|
47
33
|
- 0
|
48
34
|
version: 1.0.0
|
49
35
|
name: bundler
|
50
|
-
version_requirements: *
|
36
|
+
version_requirements: *id001
|
51
37
|
- !ruby/object:Gem::Dependency
|
52
38
|
prerelease: false
|
53
39
|
type: :development
|
54
|
-
requirement: &
|
40
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
55
41
|
none: false
|
56
42
|
requirements:
|
57
43
|
- - ~>
|
@@ -63,11 +49,11 @@ dependencies:
|
|
63
49
|
- 2
|
64
50
|
version: 1.5.2
|
65
51
|
name: jeweler
|
66
|
-
version_requirements: *
|
52
|
+
version_requirements: *id002
|
67
53
|
- !ruby/object:Gem::Dependency
|
68
54
|
prerelease: false
|
69
55
|
type: :development
|
70
|
-
requirement: &
|
56
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
71
57
|
none: false
|
72
58
|
requirements:
|
73
59
|
- - ">="
|
@@ -77,11 +63,11 @@ dependencies:
|
|
77
63
|
- 0
|
78
64
|
version: "0"
|
79
65
|
name: rcov
|
80
|
-
version_requirements: *
|
66
|
+
version_requirements: *id003
|
81
67
|
- !ruby/object:Gem::Dependency
|
82
68
|
prerelease: false
|
83
69
|
type: :development
|
84
|
-
requirement: &
|
70
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
85
71
|
none: false
|
86
72
|
requirements:
|
87
73
|
- - ">="
|
@@ -93,6 +79,22 @@ dependencies:
|
|
93
79
|
- 0
|
94
80
|
version: 3.0.0
|
95
81
|
name: rails
|
82
|
+
version_requirements: *id004
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
prerelease: false
|
85
|
+
type: :development
|
86
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
87
|
+
none: false
|
88
|
+
requirements:
|
89
|
+
- - ">="
|
90
|
+
- !ruby/object:Gem::Version
|
91
|
+
hash: 55
|
92
|
+
segments:
|
93
|
+
- 0
|
94
|
+
- 10
|
95
|
+
- 0
|
96
|
+
version: 0.10.0
|
97
|
+
name: cucumber
|
96
98
|
version_requirements: *id005
|
97
99
|
description: Genarator for controllers dedicated to custom APIs.
|
98
100
|
email: cody.frazer@cph.org
|
@@ -112,12 +114,11 @@ files:
|
|
112
114
|
- Rakefile
|
113
115
|
- VERSION
|
114
116
|
- api_controller.gemspec
|
117
|
+
- features/routes.feature
|
115
118
|
- lib/generators/api_controller/USAGE
|
116
119
|
- lib/generators/api_controller/api_controller_generator.rb
|
117
120
|
- lib/generators/api_controller/templates/api_controller.rb
|
118
121
|
- lib/generators/api_controller/templates/api_controller_test.rb
|
119
|
-
- test/helper.rb
|
120
|
-
- test/test_api_controller.rb
|
121
122
|
has_rdoc: true
|
122
123
|
homepage: http://github.com/crfrazer/api_controller
|
123
124
|
licenses:
|
@@ -152,6 +153,5 @@ rubygems_version: 1.5.2
|
|
152
153
|
signing_key:
|
153
154
|
specification_version: 3
|
154
155
|
summary: Genarator for controllers dedicated to custom APIs.
|
155
|
-
test_files:
|
156
|
-
|
157
|
-
- test/test_api_controller.rb
|
156
|
+
test_files: []
|
157
|
+
|
data/test/helper.rb
DELETED
@@ -1,19 +0,0 @@
|
|
1
|
-
require 'rubygems'
|
2
|
-
require 'bundler'
|
3
|
-
begin
|
4
|
-
Bundler.setup(:default, :development)
|
5
|
-
rescue Bundler::BundlerError => e
|
6
|
-
$stderr.puts e.message
|
7
|
-
$stderr.puts "Run `bundle install` to install missing gems"
|
8
|
-
exit e.status_code
|
9
|
-
end
|
10
|
-
require 'test/unit'
|
11
|
-
require 'shoulda'
|
12
|
-
require 'rails'
|
13
|
-
|
14
|
-
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
15
|
-
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
16
|
-
require 'generators/api_controller/api_controller_generator.rb'
|
17
|
-
|
18
|
-
class Test::Unit::TestCase
|
19
|
-
end
|
data/test/test_api_controller.rb
DELETED