rails-api 0.0.3 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/README.md +9 -2
- data/lib/generators/rails/api_resource_route/api_resource_route_generator.rb +1 -1
- data/lib/rails-api.rb +8 -0
- data/lib/rails-api/action_controller/api.rb +2 -2
- data/lib/rails-api/application.rb +2 -15
- data/lib/rails-api/templates/rails/app/config/initializers/secret_token.rb.tt +19 -0
- data/lib/rails-api/templates/rails/scaffold_controller/controller.rb +1 -9
- data/lib/rails-api/templates/test_unit/scaffold/functional_test.rb +0 -5
- data/lib/rails-api/version.rb +1 -1
- data/test/api_application/api_application_test.rb +2 -7
- data/test/api_controller/conditional_get_test.rb +1 -1
- data/test/generators/app_generator_test.rb +31 -22
- data/test/generators/resource_generator_test.rb +1 -1
- data/test/generators/scaffold_generator_test.rb +14 -8
- data/test/test_helper.rb +34 -27
- metadata +24 -32
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 200603c563a12a084abd7f3f46fd12ba552a5564
|
4
|
+
data.tar.gz: c757f33c4958d7b161f5b7fd0f744ba61503b48b
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 421034d4885439e69a73e417e171dfaf5e8c3fedaca8e90182e0865cbd2d3502f03b25243e9db47084444891f33767689072f309118b88625ca66893dc81f75f
|
7
|
+
data.tar.gz: fbe970847a57d9ba05c9bbfd21016a73bece79ee71a9c0a87b1a7ebcc9e174cbcf5f70c3903dc8abf0d31c4977816f8049c59c587373c013da00173f94e081fb
|
data/README.md
CHANGED
@@ -54,7 +54,6 @@ While you could obviously build these up in terms of existing Rack middlewares,
|
|
54
54
|
* Resourceful Routing: If you're building a RESTful JSON API, you want to be using the Rails router. Clean and conventional mapping from HTTP to controllers means not having to spend time thinking about how to model your API in terms of HTTP.
|
55
55
|
* URL Generation: The flip side of routing is URL generation. A good API based on HTTP includes URLs (see [the GitHub gist API](http://developer.github.com/v3/gists/) for an example).
|
56
56
|
* Header and Redirection Responses: `head :no_content` and `redirect_to user_url(current_user)` come in handy. Sure, you could manually add the response headers, but why?
|
57
|
-
* Caching: Rails provides page, action and fragment caching. Fragment caching is especially helpful when building up a nested JSON object.
|
58
57
|
* Basic, Digest and Token Authentication: Rails comes with out-of-the-box support for three kinds of HTTP authentication.
|
59
58
|
* Instrumentation: Rails 3.0 added an instrumentation API that will trigger registered handlers for a variety of events, such as action processing, sending a file or data, redirection, and database queries. The payload of each event comes with relevant information (for the action processing event, the payload includes the controller, action, params, request format, request method and the request's full path).
|
60
59
|
* Generators: This may be passé for advanced Rails users, but it can be nice to generate a resource and get your model, controller, test stubs, and routes created for you in a single command.
|
@@ -68,6 +67,8 @@ Of course, the Rails boot process also glues together all registered components.
|
|
68
67
|
|
69
68
|
If you're building a Rails application that will be an API server first and foremost, you can start with a more limited subset of Rails and add in features as needed.
|
70
69
|
|
70
|
+
**NOTE**: rails-api only supports Ruby 1.9.3 and above.
|
71
|
+
|
71
72
|
#### For new apps
|
72
73
|
|
73
74
|
Install the gem if you haven't already:
|
@@ -109,6 +110,10 @@ And comment out the `protect_from_forgery` call if you are using it.
|
|
109
110
|
|
110
111
|
If you want to use the Rails default middleware stack (avoid the reduction that rails-api does), you can just add config.api_only = false to config/application.rb file.
|
111
112
|
|
113
|
+
### Serialization
|
114
|
+
|
115
|
+
We suggest using [ActiveModel::Serializers][ams] to deserialize your ActiveModel/ActiveRecord objects into the desired response format (e.g. JSON).
|
116
|
+
|
112
117
|
### Choosing Middlewares
|
113
118
|
|
114
119
|
An API application comes with the following middlewares by default.
|
@@ -142,7 +147,7 @@ Rails ships with a number of other middlewares that you might want to use in an
|
|
142
147
|
* *ActionDispatch::Cookies*: Supports the *cookie* method in *ActionController*, including support for signed and encrypted cookies.
|
143
148
|
* *ActionDispatch::Flash*: Supports the *flash* mechanism in *ActionController*.
|
144
149
|
* *ActionDispatch::BestStandards*: Tells Internet Explorer to use the most standards-compliant available renderer. In production mode, if ChromeFrame is available, use ChromeFrame.
|
145
|
-
* Session Management: If a *config.session_store* is supplied
|
150
|
+
* Session Management: If a *config.session_store* is supplied and *config.api_only = false*, this middleware makes the session available as the *session* method in *ActionController*.
|
146
151
|
|
147
152
|
Any of these middlewares can be added via:
|
148
153
|
|
@@ -217,3 +222,5 @@ MIT License.
|
|
217
222
|
## Mailing List
|
218
223
|
|
219
224
|
https://groups.google.com/forum/?fromgroups#!forum/rails-api-core
|
225
|
+
|
226
|
+
[ams]: https://github.com/rails-api/active_model_serializers
|
@@ -7,7 +7,7 @@ module Rails
|
|
7
7
|
return if options[:actions].present?
|
8
8
|
route_config = regular_class_path.collect{ |namespace| "namespace :#{namespace} do " }.join(" ")
|
9
9
|
route_config << "resources :#{file_name.pluralize}"
|
10
|
-
route_config << ", except: :edit"
|
10
|
+
route_config << ", except: [:new, :edit]"
|
11
11
|
route_config << " end" * regular_class_path.size
|
12
12
|
route route_config
|
13
13
|
end
|
data/lib/rails-api.rb
CHANGED
@@ -84,7 +84,7 @@ module ActionController
|
|
84
84
|
class API < Metal
|
85
85
|
abstract!
|
86
86
|
|
87
|
-
module
|
87
|
+
module Compatibility
|
88
88
|
def cache_store; end
|
89
89
|
def cache_store=(*); end
|
90
90
|
def assets_dir=(*); end
|
@@ -101,7 +101,7 @@ module ActionController
|
|
101
101
|
def helper(*); end
|
102
102
|
end
|
103
103
|
|
104
|
-
extend
|
104
|
+
extend Compatibility
|
105
105
|
|
106
106
|
# Shortcut helper that returns all the ActionController::API modules except the ones passed in the argument:
|
107
107
|
#
|
@@ -5,7 +5,7 @@ require 'rails-api/public_exceptions'
|
|
5
5
|
module Rails
|
6
6
|
class Application < Engine
|
7
7
|
def default_middleware_stack
|
8
|
-
if Rails.
|
8
|
+
if Rails::API.rails4?
|
9
9
|
rails_four_stack
|
10
10
|
else
|
11
11
|
rails_three_stack
|
@@ -24,6 +24,7 @@ module Rails
|
|
24
24
|
|
25
25
|
generators.rails({
|
26
26
|
:helper => false,
|
27
|
+
:assets => false,
|
27
28
|
:stylesheets => false,
|
28
29
|
:stylesheet_engine => nil,
|
29
30
|
:template_engine => nil
|
@@ -72,7 +73,6 @@ module Rails
|
|
72
73
|
|
73
74
|
middleware.use ::Rack::Lock unless config.cache_classes
|
74
75
|
middleware.use ::Rack::Runtime
|
75
|
-
middleware.use ::Rack::MethodOverride
|
76
76
|
middleware.use ::ActionDispatch::RequestId
|
77
77
|
middleware.use ::Rails::Rack::Logger, config.log_tags # must come after Rack::MethodOverride to properly log overridden methods
|
78
78
|
middleware.use ::ActionDispatch::ShowExceptions, config.exceptions_app || ActionDispatch::PublicExceptions.new(Rails.public_path)
|
@@ -84,24 +84,11 @@ module Rails
|
|
84
84
|
end
|
85
85
|
|
86
86
|
middleware.use ::ActionDispatch::Callbacks
|
87
|
-
middleware.use ::ActionDispatch::Cookies
|
88
|
-
|
89
|
-
if config.session_store
|
90
|
-
if config.force_ssl && !config.session_options.key?(:secure)
|
91
|
-
config.session_options[:secure] = true
|
92
|
-
end
|
93
|
-
middleware.use config.session_store, config.session_options
|
94
|
-
middleware.use ::ActionDispatch::Flash
|
95
|
-
end
|
96
87
|
|
97
88
|
middleware.use ::ActionDispatch::ParamsParser
|
98
89
|
middleware.use ::Rack::Head
|
99
90
|
middleware.use ::Rack::ConditionalGet
|
100
91
|
middleware.use ::Rack::ETag, "no-cache"
|
101
|
-
|
102
|
-
if config.action_dispatch.best_standards_support
|
103
|
-
middleware.use ::ActionDispatch::BestStandardsSupport, config.action_dispatch.best_standards_support
|
104
|
-
end
|
105
92
|
end
|
106
93
|
end
|
107
94
|
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# Be sure to restart your server when you modify this file.
|
2
|
+
|
3
|
+
# Your secret key for verifying the integrity of signed cookies.
|
4
|
+
# If you change this key, all old signed cookies will become invalid!
|
5
|
+
|
6
|
+
# Make sure the secret is at least 30 characters and all random,
|
7
|
+
# no regular words or you'll be exposed to dictionary attacks.
|
8
|
+
# You can use `rake secret` to generate a secure secret key.
|
9
|
+
|
10
|
+
# Make sure your secret_key_base is kept private
|
11
|
+
# if you're sharing your code publicly.
|
12
|
+
|
13
|
+
# Although this is not needed for an api-only application, rails4
|
14
|
+
# requires secret_key_base or secret_toke to be defined, otherwise an
|
15
|
+
# error is raised.
|
16
|
+
# Using secret_token for rails3 compatibility. Change to secret_key_base
|
17
|
+
# to avoid deprecation warning.
|
18
|
+
# Can be safely removed in a rails3 api-only application.
|
19
|
+
<%= app_const %>.config.secret_token = '<%= app_secret %>'
|
@@ -16,14 +16,6 @@ class <%= controller_class_name %>Controller < ApplicationController
|
|
16
16
|
render json: <%= "@#{singular_table_name}" %>
|
17
17
|
end
|
18
18
|
|
19
|
-
# GET <%= route_url %>/new
|
20
|
-
# GET <%= route_url %>/new.json
|
21
|
-
def new
|
22
|
-
@<%= singular_table_name %> = <%= orm_class.build(class_name) %>
|
23
|
-
|
24
|
-
render json: <%= "@#{singular_table_name}" %>
|
25
|
-
end
|
26
|
-
|
27
19
|
# POST <%= route_url %>
|
28
20
|
# POST <%= route_url %>.json
|
29
21
|
def create
|
@@ -41,7 +33,7 @@ class <%= controller_class_name %>Controller < ApplicationController
|
|
41
33
|
def update
|
42
34
|
@<%= singular_table_name %> = <%= orm_class.find(class_name, "params[:id]") %>
|
43
35
|
|
44
|
-
if @<%= orm_instance.update_attributes("params[:#{singular_table_name}]") %>
|
36
|
+
if @<%= Rails::API.rails4? ? orm_instance.update("params[:#{singular_table_name}]") : orm_instance.update_attributes("params[:#{singular_table_name}]") %>
|
45
37
|
head :no_content
|
46
38
|
else
|
47
39
|
render json: <%= "@#{orm_instance.errors}" %>, status: :unprocessable_entity
|
@@ -12,11 +12,6 @@ class <%= controller_class_name %>ControllerTest < ActionController::TestCase
|
|
12
12
|
assert_not_nil assigns(:<%= table_name %>)
|
13
13
|
end
|
14
14
|
|
15
|
-
test "should get new" do
|
16
|
-
get :new
|
17
|
-
assert_response :success
|
18
|
-
end
|
19
|
-
|
20
15
|
test "should create <%= singular_table_name %>" do
|
21
16
|
assert_difference('<%= class_name %>.count') do
|
22
17
|
post :create, <%= "#{singular_table_name}: { #{attributes_hash} }" %>
|
data/lib/rails-api/version.rb
CHANGED
@@ -2,8 +2,6 @@ require 'test_helper'
|
|
2
2
|
require 'action_controller/railtie'
|
3
3
|
require 'rack/test'
|
4
4
|
|
5
|
-
app.initialize!
|
6
|
-
|
7
5
|
class OmgController < ActionController::API
|
8
6
|
def index
|
9
7
|
render :text => "OMG"
|
@@ -13,6 +11,8 @@ end
|
|
13
11
|
class ApiApplicationTest < ActiveSupport::TestCase
|
14
12
|
include ::Rack::Test::Methods
|
15
13
|
|
14
|
+
app.initialize!
|
15
|
+
|
16
16
|
def test_boot_api_app
|
17
17
|
get "/omg"
|
18
18
|
assert_equal 200, last_response.status
|
@@ -54,7 +54,6 @@ class ApiApplicationTest < ActiveSupport::TestCase
|
|
54
54
|
"Rack::Lock",
|
55
55
|
"ActiveSupport::Cache::Strategy::LocalCache",
|
56
56
|
"Rack::Runtime",
|
57
|
-
"Rack::MethodOverride",
|
58
57
|
"ActionDispatch::RequestId",
|
59
58
|
"Rails::Rack::Logger",
|
60
59
|
"ActionDispatch::ShowExceptions",
|
@@ -62,14 +61,10 @@ class ApiApplicationTest < ActiveSupport::TestCase
|
|
62
61
|
"ActionDispatch::RemoteIp",
|
63
62
|
"ActionDispatch::Reloader",
|
64
63
|
"ActionDispatch::Callbacks",
|
65
|
-
"ActionDispatch::Cookies",
|
66
|
-
"ActionDispatch::Session::CookieStore",
|
67
|
-
"ActionDispatch::Flash",
|
68
64
|
"ActionDispatch::ParamsParser",
|
69
65
|
"Rack::Head",
|
70
66
|
"Rack::ConditionalGet",
|
71
67
|
"Rack::ETag",
|
72
|
-
"ActionDispatch::BestStandardsSupport"
|
73
68
|
]
|
74
69
|
end
|
75
70
|
end
|
@@ -51,7 +51,7 @@ class ConditionalGetApiTest < ActionController::TestCase
|
|
51
51
|
@request.if_modified_since = @last_modified
|
52
52
|
get :one
|
53
53
|
assert_equal 304, @response.status.to_i
|
54
|
-
|
54
|
+
assert @response.body.blank?
|
55
55
|
assert_equal @last_modified, @response.headers['Last-Modified']
|
56
56
|
end
|
57
57
|
end
|
@@ -28,28 +28,37 @@ class AppGeneratorTest < Rails::Generators::TestCase
|
|
28
28
|
private
|
29
29
|
|
30
30
|
def default_files
|
31
|
-
%W(
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
31
|
+
files = %W(
|
32
|
+
.gitignore
|
33
|
+
Gemfile
|
34
|
+
Rakefile
|
35
|
+
config.ru
|
36
|
+
app/controllers
|
37
|
+
app/mailers
|
38
|
+
app/models
|
39
|
+
config/environments
|
40
|
+
config/initializers
|
41
|
+
config/locales
|
42
|
+
db
|
43
|
+
lib
|
44
|
+
lib/tasks
|
45
|
+
lib/assets
|
46
|
+
log
|
47
|
+
test/fixtures
|
48
|
+
test/#{generated_test_funcional_dir}
|
49
|
+
test/integration
|
50
|
+
test/#{generated_test_unit_dir}
|
51
|
+
)
|
52
|
+
files.concat rails4? ? default_files_rails4 : default_files_rails3
|
53
|
+
files
|
54
|
+
end
|
55
|
+
|
56
|
+
def default_files_rails3
|
57
|
+
%w(script/rails)
|
58
|
+
end
|
59
|
+
|
60
|
+
def default_files_rails4
|
61
|
+
%w(bin/bundle bin/rails bin/rake)
|
53
62
|
end
|
54
63
|
|
55
64
|
def skipped_files
|
@@ -11,7 +11,7 @@ class ResourceGeneratorTest < Rails::Generators::TestCase
|
|
11
11
|
run_generator
|
12
12
|
|
13
13
|
assert_file "config/routes.rb" do |route|
|
14
|
-
assert_match(/resources :accounts, except: :edit$/, route)
|
14
|
+
assert_match(/resources :accounts, except: \[:new, :edit\]$/, route)
|
15
15
|
assert_no_match(/resources :accounts$/, route)
|
16
16
|
end
|
17
17
|
end
|
@@ -29,7 +29,7 @@ class ScaffoldGeneratorTest < Rails::Generators::TestCase
|
|
29
29
|
|
30
30
|
# Route
|
31
31
|
assert_file "config/routes.rb" do |content|
|
32
|
-
assert_match(/resources :product_lines, except: :edit$/, content)
|
32
|
+
assert_match(/resources :product_lines, except: \[:new, :edit\]$/, content)
|
33
33
|
assert_no_match(/resource :product_lines$/, content)
|
34
34
|
end
|
35
35
|
|
@@ -46,10 +46,6 @@ class ScaffoldGeneratorTest < Rails::Generators::TestCase
|
|
46
46
|
assert_match(/@product_line = ProductLine\.find\(params\[:id\]\)/, m)
|
47
47
|
end
|
48
48
|
|
49
|
-
assert_instance_method :new, content do |m|
|
50
|
-
assert_match(/@product_line = ProductLine\.new/, m)
|
51
|
-
end
|
52
|
-
|
53
49
|
assert_instance_method :create, content do |m|
|
54
50
|
assert_match(/@product_line = ProductLine\.new\(params\[:product_line\]\)/, m)
|
55
51
|
assert_match(/@product_line\.save/, m)
|
@@ -58,7 +54,11 @@ class ScaffoldGeneratorTest < Rails::Generators::TestCase
|
|
58
54
|
|
59
55
|
assert_instance_method :update, content do |m|
|
60
56
|
assert_match(/@product_line = ProductLine\.find\(params\[:id\]\)/, m)
|
61
|
-
|
57
|
+
if rails4?
|
58
|
+
assert_match(/@product_line\.update\(params\[:product_line\]\)/, m)
|
59
|
+
else
|
60
|
+
assert_match(/@product_line\.update_attributes\(params\[:product_line\]\)/, m)
|
61
|
+
end
|
62
62
|
assert_match(/@product_line\.errors/, m)
|
63
63
|
end
|
64
64
|
|
@@ -70,8 +70,13 @@ class ScaffoldGeneratorTest < Rails::Generators::TestCase
|
|
70
70
|
|
71
71
|
assert_file "test/#{generated_test_funcional_dir}/product_lines_controller_test.rb" do |test|
|
72
72
|
assert_match(/class ProductLinesControllerTest < ActionController::TestCase/, test)
|
73
|
-
|
74
|
-
|
73
|
+
if rails4?
|
74
|
+
assert_match(/post :create, product_line: \{ product_id: @product_line.product_id, title: @product_line.title, user_id: @product_line.user_id \}/, test)
|
75
|
+
assert_match(/put :update, id: @product_line, product_line: \{ product_id: @product_line.product_id, title: @product_line.title, user_id: @product_line.user_id \}/, test)
|
76
|
+
else
|
77
|
+
assert_match(/post :create, product_line: \{ title: @product_line.title \}/, test)
|
78
|
+
assert_match(/put :update, id: @product_line, product_line: \{ title: @product_line.title \}/, test)
|
79
|
+
end
|
75
80
|
assert_no_match(/assert_redirected_to/, test)
|
76
81
|
end
|
77
82
|
|
@@ -88,5 +93,6 @@ class ScaffoldGeneratorTest < Rails::Generators::TestCase
|
|
88
93
|
# Assets
|
89
94
|
assert_no_file "app/assets/stylesheets/scaffold.css"
|
90
95
|
assert_no_file "app/assets/stylesheets/product_lines.css"
|
96
|
+
assert_no_file "app/assets/javascripts/product_lines.js"
|
91
97
|
end
|
92
98
|
end
|
data/test/test_helper.rb
CHANGED
@@ -1,50 +1,57 @@
|
|
1
1
|
# Configure Rails Environment
|
2
2
|
ENV["RAILS_ENV"] = "test"
|
3
3
|
|
4
|
+
require 'bundler/setup'
|
4
5
|
require 'rails'
|
5
6
|
require 'rails/test_help'
|
6
7
|
require 'rails-api'
|
7
8
|
|
8
9
|
def rails4?
|
9
|
-
Rails.
|
10
|
+
Rails::API.rails4?
|
10
11
|
end
|
11
12
|
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
13
|
+
class ActiveSupport::TestCase
|
14
|
+
def self.app
|
15
|
+
@@app ||= Class.new(Rails::Application) do
|
16
|
+
config.active_support.deprecation = :stderr
|
17
|
+
config.generators do |c|
|
18
|
+
c.orm :active_record, :migration => true,
|
19
|
+
:timestamps => true
|
20
|
+
|
21
|
+
c.test_framework :test_unit, :fixture => true,
|
22
|
+
:fixture_replacement => nil
|
23
|
+
|
24
|
+
c.integration_tool :test_unit
|
25
|
+
c.performance_tool :test_unit
|
26
|
+
end
|
27
|
+
|
28
|
+
if rails4?
|
29
|
+
config.eager_load = false
|
30
|
+
config.secret_key_base = 'abc123'
|
31
|
+
end
|
32
|
+
|
33
|
+
def self.name
|
34
|
+
'TestApp'
|
35
|
+
end
|
24
36
|
end
|
37
|
+
end
|
25
38
|
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
end
|
39
|
+
def app
|
40
|
+
self.class.app
|
41
|
+
end
|
30
42
|
|
31
|
-
|
32
|
-
|
33
|
-
end
|
43
|
+
app.routes.append do
|
44
|
+
get ':controller(/:action)'
|
34
45
|
end
|
35
|
-
|
46
|
+
app.routes.finalize!
|
36
47
|
|
37
|
-
app.
|
38
|
-
get ':controller(/:action)'
|
48
|
+
app.load_generators
|
39
49
|
end
|
40
|
-
app.routes.finalize!
|
41
50
|
|
42
51
|
module ActionController
|
43
52
|
class API
|
44
|
-
include app.routes.url_helpers
|
53
|
+
include ActiveSupport::TestCase.app.routes.url_helpers
|
45
54
|
end
|
46
55
|
end
|
47
56
|
|
48
|
-
app.load_generators
|
49
|
-
|
50
57
|
Rails.logger = Logger.new("/dev/null")
|
metadata
CHANGED
@@ -1,52 +1,46 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rails-api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
5
|
-
prerelease:
|
4
|
+
version: 0.1.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Santiago Pastorino and Carlos Antonio da Silva
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2013-04-01 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: actionpack
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
|
-
- -
|
17
|
+
- - '>='
|
20
18
|
- !ruby/object:Gem::Version
|
21
|
-
version: 3.2.
|
19
|
+
version: 3.2.11
|
22
20
|
type: :runtime
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
|
-
- -
|
24
|
+
- - '>='
|
28
25
|
- !ruby/object:Gem::Version
|
29
|
-
version: 3.2.
|
26
|
+
version: 3.2.11
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: railties
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
|
-
- -
|
31
|
+
- - '>='
|
36
32
|
- !ruby/object:Gem::Version
|
37
|
-
version: 3.2.
|
33
|
+
version: 3.2.11
|
38
34
|
type: :runtime
|
39
35
|
prerelease: false
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
37
|
requirements:
|
43
|
-
- -
|
38
|
+
- - '>='
|
44
39
|
- !ruby/object:Gem::Version
|
45
|
-
version: 3.2.
|
40
|
+
version: 3.2.11
|
46
41
|
- !ruby/object:Gem::Dependency
|
47
42
|
name: tzinfo
|
48
43
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
44
|
requirements:
|
51
45
|
- - ~>
|
52
46
|
- !ruby/object:Gem::Version
|
@@ -54,7 +48,6 @@ dependencies:
|
|
54
48
|
type: :runtime
|
55
49
|
prerelease: false
|
56
50
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
51
|
requirements:
|
59
52
|
- - ~>
|
60
53
|
- !ruby/object:Gem::Version
|
@@ -62,22 +55,21 @@ dependencies:
|
|
62
55
|
- !ruby/object:Gem::Dependency
|
63
56
|
name: rails
|
64
57
|
requirement: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
58
|
requirements:
|
67
|
-
- -
|
59
|
+
- - '>='
|
68
60
|
- !ruby/object:Gem::Version
|
69
|
-
version: 3.2.
|
61
|
+
version: 3.2.11
|
70
62
|
type: :development
|
71
63
|
prerelease: false
|
72
64
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
-
none: false
|
74
65
|
requirements:
|
75
|
-
- -
|
66
|
+
- - '>='
|
76
67
|
- !ruby/object:Gem::Version
|
77
|
-
version: 3.2.
|
78
|
-
description:
|
79
|
-
|
80
|
-
|
68
|
+
version: 3.2.11
|
69
|
+
description: |-
|
70
|
+
Rails::API is a subset of a normal Rails application,
|
71
|
+
created for applications that don't require all
|
72
|
+
functionality that a complete Rails application provides
|
81
73
|
email:
|
82
74
|
- <santiago@wyeworks.com>
|
83
75
|
- <carlosantoniodasilva@gmail.com>
|
@@ -94,6 +86,7 @@ files:
|
|
94
86
|
- lib/rails-api/generators/rails/app/app_generator.rb
|
95
87
|
- lib/rails-api/public_exceptions.rb
|
96
88
|
- lib/rails-api/templates/rails/app/app/controllers/application_controller.rb.tt
|
89
|
+
- lib/rails-api/templates/rails/app/config/initializers/secret_token.rb.tt
|
97
90
|
- lib/rails-api/templates/rails/app/config/initializers/wrap_parameters.rb.tt
|
98
91
|
- lib/rails-api/templates/rails/app/Gemfile
|
99
92
|
- lib/rails-api/templates/rails/scaffold_controller/controller.rb
|
@@ -117,27 +110,26 @@ files:
|
|
117
110
|
homepage: https://github.com/spastorino/rails-api
|
118
111
|
licenses:
|
119
112
|
- MIT
|
113
|
+
metadata: {}
|
120
114
|
post_install_message:
|
121
115
|
rdoc_options: []
|
122
116
|
require_paths:
|
123
117
|
- lib
|
124
118
|
required_ruby_version: !ruby/object:Gem::Requirement
|
125
|
-
none: false
|
126
119
|
requirements:
|
127
|
-
- -
|
120
|
+
- - '>='
|
128
121
|
- !ruby/object:Gem::Version
|
129
122
|
version: '0'
|
130
123
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
131
|
-
none: false
|
132
124
|
requirements:
|
133
|
-
- -
|
125
|
+
- - '>='
|
134
126
|
- !ruby/object:Gem::Version
|
135
127
|
version: 1.3.6
|
136
128
|
requirements: []
|
137
129
|
rubyforge_project:
|
138
|
-
rubygems_version:
|
130
|
+
rubygems_version: 2.0.0
|
139
131
|
signing_key:
|
140
|
-
specification_version:
|
132
|
+
specification_version: 4
|
141
133
|
summary: Rails for API only Applications
|
142
134
|
test_files:
|
143
135
|
- test/api_application/api_application_test.rb
|