apipie-rails 0.0.21 → 0.0.22
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/.travis.yml +1 -0
- data/CHANGELOG +6 -0
- data/README.rst +65 -13
- data/apipie-rails.gemspec +2 -2
- data/lib/apipie/application.rb +7 -2
- data/lib/apipie/version.rb +1 -1
- data/lib/tasks/apipie.rake +1 -1
- data/spec/lib/application_spec.rb +18 -3
- metadata +7 -7
data/.travis.yml
CHANGED
data/CHANGELOG
CHANGED
data/README.rst
CHANGED
@@ -2,7 +2,8 @@
|
|
2
2
|
API Documentation Tool
|
3
3
|
========================
|
4
4
|
|
5
|
-
.. image:: https://
|
5
|
+
.. image:: https://travis-ci.org/Pajk/apipie-rails.png?branch=master
|
6
|
+
:target: https://travis-ci.org/Pajk/apipie-rails
|
6
7
|
|
7
8
|
Apipie-rails is a DSL and Rails engine for documenting you RESTful
|
8
9
|
API. Instead of traditional use of ``#comments``, Apipie let's you
|
@@ -131,7 +132,6 @@ Example:
|
|
131
132
|
|
132
133
|
resource_description do
|
133
134
|
short 'Site members'
|
134
|
-
path '/users'
|
135
135
|
formats ['json']
|
136
136
|
param :id, Fixnum, :desc => "User ID", :required => false
|
137
137
|
param :resource_param, Hash, :desc => 'Param description for all methods' do
|
@@ -147,20 +147,20 @@ Example:
|
|
147
147
|
These can now be accessed in <tt>shared/header</tt> with:
|
148
148
|
Headline: <%= headline %>
|
149
149
|
First name: <%= person.first_name %>
|
150
|
-
|
150
|
+
|
151
151
|
If you need to find out whether a certain local variable has been
|
152
152
|
assigned a value in a particular render call, you need to use the
|
153
153
|
following pattern:
|
154
|
-
|
154
|
+
|
155
155
|
<% if local_assigns.has_key? :headline %>
|
156
156
|
Headline: <%= headline %>
|
157
157
|
<% end %>
|
158
|
-
|
158
|
+
|
159
159
|
Testing using <tt>defined? headline</tt> will not work. This is an
|
160
160
|
implementation restriction.
|
161
|
-
|
161
|
+
|
162
162
|
=== Template caching
|
163
|
-
|
163
|
+
|
164
164
|
By default, Rails will compile each template to a method in order
|
165
165
|
to render it. When you alter a template, Rails will check the
|
166
166
|
file's modification time and recompile it in development mode.
|
@@ -218,7 +218,7 @@ Example:
|
|
218
218
|
param :regexp_param, /^[0-9]* years/, :desc => "regexp param"
|
219
219
|
param :array_param, [100, "one", "two", 1, 2], :desc => "array validator"
|
220
220
|
param :boolean_param, [true, false], :desc => "array validator with boolean"
|
221
|
-
param :proc_param, lambda { |val|
|
221
|
+
param :proc_param, lambda { |val|
|
222
222
|
val == "param value" ? true : "The only good value is 'param value'."
|
223
223
|
}, :desc => "proc validator"
|
224
224
|
description "method description"
|
@@ -656,23 +656,23 @@ So we create apipie_validators.rb initializer with this content:
|
|
656
656
|
.. code:: ruby
|
657
657
|
|
658
658
|
class IntegerValidator < Apipie::Validator::BaseValidator
|
659
|
-
|
659
|
+
|
660
660
|
def initialize(param_description, argument)
|
661
661
|
super(param_description)
|
662
662
|
@type = argument
|
663
663
|
end
|
664
|
-
|
664
|
+
|
665
665
|
def validate(value)
|
666
666
|
return false if value.nil?
|
667
667
|
!!(value.to_s =~ /^[-+]?[0-9]+$/)
|
668
668
|
end
|
669
|
-
|
669
|
+
|
670
670
|
def self.build(param_description, argument, options, block)
|
671
671
|
if argument == Integer || argument == Fixnum
|
672
672
|
self.new(param_description, argument)
|
673
673
|
end
|
674
674
|
end
|
675
|
-
|
675
|
+
|
676
676
|
def description
|
677
677
|
"Must be #{@type}."
|
678
678
|
end
|
@@ -832,10 +832,62 @@ tests or a running server, setting ``APIPIE_RECORD=examples``
|
|
832
832
|
APIPIE_RECORD=examples rake test:functionals
|
833
833
|
APIPIE_RECORD=examples rails server
|
834
834
|
|
835
|
-
The data
|
835
|
+
The data is written into ``doc/apipie_examples.yml``. By default,
|
836
836
|
only the first example is shown for each action. You can customize
|
837
837
|
this by setting ``show_in_doc`` attribute at each example.
|
838
838
|
|
839
|
+
.. code::
|
840
|
+
|
841
|
+
--- !omap
|
842
|
+
- announcements#index:
|
843
|
+
- !omap
|
844
|
+
- verb: :GET
|
845
|
+
- path: /api/blabla/1
|
846
|
+
- versions:
|
847
|
+
- '1.0'
|
848
|
+
- query:
|
849
|
+
- request_data:
|
850
|
+
- response_data:
|
851
|
+
...
|
852
|
+
- code: 200
|
853
|
+
- show_in_doc: 1 # If 1, show. If 0, do not show.
|
854
|
+
- recorded: true
|
855
|
+
|
856
|
+
In RSpec you can add metadata to examples. We can use that feature
|
857
|
+
to mark selected examples – the ones that perform the requests that we want to
|
858
|
+
show as examples in the documentation.
|
859
|
+
|
860
|
+
For example, we can add ``show_in_doc`` to examples, like this:
|
861
|
+
|
862
|
+
.. code:: ruby
|
863
|
+
|
864
|
+
describe "This is the correct path" do
|
865
|
+
it "some test", :show_in_doc do
|
866
|
+
....
|
867
|
+
end
|
868
|
+
end
|
869
|
+
|
870
|
+
context "These are edge cases" do
|
871
|
+
it "Can't authenticate" do
|
872
|
+
....
|
873
|
+
end
|
874
|
+
|
875
|
+
it "record not found" do
|
876
|
+
....
|
877
|
+
end
|
878
|
+
end
|
879
|
+
|
880
|
+
And then configure RSpec in this way:
|
881
|
+
|
882
|
+
.. code:: ruby
|
883
|
+
|
884
|
+
RSpec.configure do |config|
|
885
|
+
config.treat_symbols_as_metadata_keys_with_true_values = true
|
886
|
+
config.filter_run :show_in_doc => true if ENV['APIPIE_RECORD']
|
887
|
+
end
|
888
|
+
|
889
|
+
This way, when running in recording mode, only the tests that has been marked with the
|
890
|
+
``:show_in_doc`` metadata will be ran, and hence only those will be used as examples.
|
839
891
|
|
840
892
|
====================
|
841
893
|
Bindings Generator
|
data/apipie-rails.gemspec
CHANGED
@@ -9,7 +9,7 @@ Gem::Specification.new do |s|
|
|
9
9
|
s.email = ["pajkycz@gmail.com", "inecas@redhat.com"]
|
10
10
|
s.homepage = "http://github.com/Pajk/apipie-rails"
|
11
11
|
s.summary = %q{Rails REST API documentation tool}
|
12
|
-
s.description = %q{
|
12
|
+
s.description = %q{Rails REST API documentation tool}
|
13
13
|
|
14
14
|
|
15
15
|
s.files = `git ls-files`.split("\n")
|
@@ -19,7 +19,7 @@ Gem::Specification.new do |s|
|
|
19
19
|
s.add_dependency "rails", ">= 3.0.10"
|
20
20
|
s.add_development_dependency "rspec-rails"
|
21
21
|
s.add_development_dependency "sqlite3"
|
22
|
-
s.add_development_dependency "minitest"
|
22
|
+
s.add_development_dependency "minitest", '~> 4.0'
|
23
23
|
s.add_development_dependency "maruku"
|
24
24
|
s.add_development_dependency "RedCloth"
|
25
25
|
s.add_development_dependency "rake"
|
data/lib/apipie/application.rb
CHANGED
@@ -292,8 +292,13 @@ module Apipie
|
|
292
292
|
|
293
293
|
def version_prefix(klass)
|
294
294
|
version = controller_versions(klass).first
|
295
|
-
|
296
|
-
|
295
|
+
base_url = get_base_url(version)
|
296
|
+
return "/" if base_url.nil?
|
297
|
+
base_url[1..-1] + "/"
|
298
|
+
end
|
299
|
+
|
300
|
+
def get_base_url(version)
|
301
|
+
Apipie.configuration.api_base_url[version]
|
297
302
|
end
|
298
303
|
|
299
304
|
def get_resource_version(resource_description)
|
data/lib/apipie/version.rb
CHANGED
data/lib/tasks/apipie.rake
CHANGED
@@ -124,7 +124,7 @@ namespace :apipie do
|
|
124
124
|
|
125
125
|
def with_loaded_documentation
|
126
126
|
Apipie.configuration.use_cache = false # we don't want to skip DSL evaluation
|
127
|
-
|
127
|
+
Apipie.reload_documentation
|
128
128
|
yield
|
129
129
|
end
|
130
130
|
|
@@ -4,19 +4,34 @@ describe Apipie::Application do
|
|
4
4
|
|
5
5
|
describe "get_resource_name" do
|
6
6
|
subject {Apipie.get_resource_name(Api::V2::Nested::ArchitecturesController)}
|
7
|
+
|
7
8
|
context "with namespaced_resources enabled" do
|
8
9
|
before { Apipie.configuration.namespaced_resources = true }
|
10
|
+
context "with a defined base url" do
|
11
|
+
|
12
|
+
it "should not overwrite the parent resource" do
|
13
|
+
should_not eq(Apipie.get_resource_name(Api::V2::ArchitecturesController))
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
9
17
|
|
10
|
-
|
11
|
-
|
18
|
+
context "with an undefined base url" do
|
19
|
+
before {Apipie.app.stub(:get_base_url) { nil }}
|
20
|
+
|
21
|
+
it "should not raise an error" do
|
22
|
+
expect { Apipie.get_resource_name(Api::V2::ArchitecturesController) }.
|
23
|
+
not_to raise_error
|
24
|
+
end
|
12
25
|
end
|
26
|
+
|
27
|
+
after { Apipie.configuration.namespaced_resources = false }
|
13
28
|
end
|
14
29
|
|
15
30
|
context "with namespaced_resources enabled" do
|
16
31
|
before { Apipie.configuration.namespaced_resources = false }
|
17
32
|
|
18
33
|
it "should overwrite the the parent" do
|
19
|
-
|
34
|
+
should eq(Apipie.get_resource_name(Api::V2::ArchitecturesController))
|
20
35
|
end
|
21
36
|
end
|
22
37
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: apipie-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.22
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2013-
|
13
|
+
date: 2013-06-12 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: rails
|
@@ -65,17 +65,17 @@ dependencies:
|
|
65
65
|
requirement: !ruby/object:Gem::Requirement
|
66
66
|
none: false
|
67
67
|
requirements:
|
68
|
-
- -
|
68
|
+
- - ~>
|
69
69
|
- !ruby/object:Gem::Version
|
70
|
-
version: '0'
|
70
|
+
version: '4.0'
|
71
71
|
type: :development
|
72
72
|
prerelease: false
|
73
73
|
version_requirements: !ruby/object:Gem::Requirement
|
74
74
|
none: false
|
75
75
|
requirements:
|
76
|
-
- -
|
76
|
+
- - ~>
|
77
77
|
- !ruby/object:Gem::Version
|
78
|
-
version: '0'
|
78
|
+
version: '4.0'
|
79
79
|
- !ruby/object:Gem::Dependency
|
80
80
|
name: maruku
|
81
81
|
requirement: !ruby/object:Gem::Requirement
|
@@ -124,7 +124,7 @@ dependencies:
|
|
124
124
|
- - ! '>='
|
125
125
|
- !ruby/object:Gem::Version
|
126
126
|
version: '0'
|
127
|
-
description:
|
127
|
+
description: Rails REST API documentation tool
|
128
128
|
email:
|
129
129
|
- pajkycz@gmail.com
|
130
130
|
- inecas@redhat.com
|