barite 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 1dc754c61e3fc1e80c733744320dd5aa5e16b452
4
+ data.tar.gz: 4c2e43d5979f7ac75452cb9befb0c493a769e686
5
+ SHA512:
6
+ metadata.gz: 5c3656c205d4baf80ca287f9e426e0d895c9d24c981aff9956314a0c3bcabd9c7aa748f6fc585b6dc58600b66107a778a74cab6083d47d7817b14fa4fd35ed6e
7
+ data.tar.gz: 29cd781550aa2f2978dce565026d959a2edc43c035474746ddae1cd5c9bd1c6e88c8ce6fac25f173a4eca67c550a9f728c38092184b3a6f7a675f2cf00576509
data/MIT-LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright 2017 weathare
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,64 @@
1
+ # Barite
2
+
3
+ Ruby on Rails (with RSpec) custom generators.
4
+
5
+ [![Build Status](https://travis-ci.org/weathare/barite.svg?branch=master)](https://travis-ci.org/weathare/barite)
6
+
7
+ ## Usage
8
+
9
+ ### app/serializers
10
+
11
+ ```bash
12
+ $ rails g response NAME
13
+ ```
14
+
15
+ ### app/*/concerns
16
+
17
+ ```bash
18
+ // controllers module
19
+ $ rails g concern:controller NAME
20
+
21
+ // model module
22
+ $ rails g concern:model NAME
23
+ ```
24
+
25
+ ### spec/*/*_spec.rb
26
+
27
+ inject test code with included modules
28
+
29
+ ```bash
30
+ // controller
31
+ $ rails g concern:rspec MODULE_NAME --controller CONTROLLER_NAME
32
+
33
+ // model
34
+ $ rails g concern:rspec MODULE_NAME --model MODEL_NAME
35
+ ```
36
+
37
+ ### rambulance setup
38
+
39
+ ```bash
40
+ $ rails g rambulance:setup
41
+ ```
42
+
43
+ ## Installation
44
+ Add this line to your application's Gemfile:
45
+
46
+ ```ruby
47
+ gem 'barite'
48
+ ```
49
+
50
+ And then execute:
51
+ ```bash
52
+ $ bundle
53
+ ```
54
+
55
+ Or install it yourself as:
56
+ ```bash
57
+ $ gem install barite
58
+ ```
59
+
60
+ ## Contributing
61
+ Contribution directions go here.
62
+
63
+ ## License
64
+ The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
data/Rakefile ADDED
@@ -0,0 +1,17 @@
1
+ begin
2
+ require "bundler/setup"
3
+ rescue LoadError
4
+ puts "You must `gem install bundler` and `bundle install` to run rake tasks"
5
+ end
6
+
7
+ require "rdoc/task"
8
+
9
+ RDoc::Task.new(:rdoc) do |rdoc|
10
+ rdoc.rdoc_dir = "rdoc"
11
+ rdoc.title = "Barite"
12
+ rdoc.options << "--line-numbers"
13
+ rdoc.rdoc_files.include("README.md")
14
+ rdoc.rdoc_files.include("lib/**/*.rb")
15
+ end
16
+
17
+ require "bundler/gem_tasks"
data/lib/barite.rb ADDED
@@ -0,0 +1,11 @@
1
+ module Barite; end
2
+ module Concern; end
3
+ module Rails::Serializer; end
4
+
5
+ require "rails/generators"
6
+ require "barite/version"
7
+ require "generators/concern/controller/controller_generator"
8
+ require "generators/concern/model/model_generator"
9
+ require "generators/concern/rspec/rspec_generator"
10
+ require "generators/rambulance/setup/setup_generator"
11
+ require "generators/rails/response_generator"
@@ -0,0 +1,3 @@
1
+ module Barite
2
+ VERSION = "0.1.0"
3
+ end
@@ -0,0 +1,9 @@
1
+ class Concern::ControllerGenerator < Rails::Generators::NamedBase
2
+ source_root File.expand_path("../../templates", __FILE__)
3
+
4
+ def create_concerns
5
+ setting_path = "controllers/concerns"
6
+ template "concern.erb", File.join("app", setting_path, class_path, "#{file_name}.rb")
7
+ template "controller_spec.erb", File.join("spec", setting_path, class_path, "#{file_name}_spec.rb")
8
+ end
9
+ end
@@ -0,0 +1,33 @@
1
+ class Concern::ModelGenerator < Rails::Generators::NamedBase
2
+ source_root File.expand_path("../../templates", __FILE__)
3
+
4
+ def create_concerns
5
+ setting_path = "models/concerns"
6
+ template "concern.erb", File.join("app", setting_path, class_path, "#{file_name}.rb")
7
+ template "model_spec.erb", File.join("spec", setting_path, class_path, "#{file_name}_spec.rb")
8
+ end
9
+
10
+ def copy_rspec_helper
11
+ copy_file("mock_table_helper.rb", "spec/support/mock_table_helper.rb") if invoke?
12
+ end
13
+
14
+ def inject_code
15
+ rspec_helper = Rails.root.join(*%w[spec rails_helper.rb])
16
+ inject_into_file rspec_helper, before: /^ActiveRecord::Migration\.maintain_test_schema!/ do <<-'CODE'
17
+ Dir[Rails.root.join("spec/support/**/*.rb")].each { |f| require f }
18
+
19
+ CODE
20
+ end if injectable?(rspec_helper)
21
+ end
22
+
23
+ private
24
+ def invoke?
25
+ self.behavior == :invoke
26
+ end
27
+
28
+ def injectable?(file_path)
29
+ if invoke?
30
+ !(File.read(file_path) =~ /^Dir.+spec\/support\/.+\.rb.+require f/)
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,65 @@
1
+ require "active_support/inflector"
2
+
3
+ class Concern::RspecGenerator < Rails::Generators::NamedBase
4
+ class_option(
5
+ :controller,
6
+ type: :string,
7
+ aliases: "-c",
8
+ )
9
+
10
+ class_option(
11
+ :model,
12
+ type: :string,
13
+ aliases: "-m",
14
+ )
15
+
16
+ source_root(File.expand_path("../../templates", __FILE__))
17
+
18
+ def generate_spec
19
+ return unless options[:controller] || options[:model]
20
+
21
+ template("base_#{_type}_spec.erb", spec_filepath) if invoke? && !File.exists?(spec_filepath)
22
+ end
23
+
24
+ def copy_shared_spec
25
+ copy_file("include_module_example.rb", "spec/support/include_module_example.rb") if invoke?
26
+ end
27
+
28
+ def include_spec
29
+ # [xxx] - destroy の時に不要なコードが挿入されてしまう
30
+ inject_into_file spec_filepath, content, after: /^RSpec.describe (.+) do\n/
31
+ end
32
+
33
+ private
34
+ def invoke?
35
+ self.behavior == :invoke
36
+ end
37
+
38
+ def _type
39
+ (!!options[:controller]) ? :controller : :model
40
+ end
41
+
42
+ def target_name
43
+ options[_type].classify
44
+ end
45
+
46
+ def spec_filepath
47
+ {
48
+ controller: "_controller_spec.rb",
49
+ model: "_spec.rb",
50
+ }.map do |type, postfix|
51
+ File.join(*%W[spec #{type}s #{options[type]}#{postfix}]) if !!options&.[](type)
52
+ end.compact.pop
53
+ end
54
+
55
+ def content
56
+ <<-'CODE'
57
+ describe "Included module" do
58
+ subject { [class_name] }
59
+
60
+ include_examples "included modules"
61
+ end
62
+ CODE
63
+ .gsub(/class_name/, class_name)
64
+ end
65
+ end
@@ -0,0 +1,4 @@
1
+ require "rails_helper"
2
+
3
+ RSpec.describe <%= target_name %>, type: :controller do
4
+ end
@@ -0,0 +1,4 @@
1
+ require "rails_helper"
2
+
3
+ RSpec.describe <%= target_name %>, type: :model do
4
+ end
@@ -0,0 +1,11 @@
1
+ module <%= class_name %>
2
+ extend ActiveSupport::Concern
3
+
4
+ included do
5
+ # some callbacks ...
6
+ end
7
+
8
+ class_methods do
9
+ # some methods ...
10
+ end
11
+ end
@@ -0,0 +1,34 @@
1
+ require "rails_helper"
2
+
3
+ class <%= class_name %> < ApplicationController
4
+ include ::<%= class_name %>
5
+ # some fixtures code ...
6
+ end
7
+
8
+ RSpec.describe <%= class_name %>, type: :controller do
9
+ controller <%= class_name %> do
10
+ def index
11
+ render(
12
+ status: 200,
13
+ plain: request_status.to_s,
14
+ )
15
+ end
16
+ end
17
+
18
+ before do
19
+ routes.draw { get "/" => "<%= class_name.split("::").last.underscore %>#index" }
20
+ end
21
+
22
+ describe "Include mix-in" do
23
+ subject do
24
+ get :index, params: params
25
+ response.body
26
+ end
27
+
28
+ context "{test case}" do
29
+ # test case code...
30
+ # let(:params) { nil }
31
+ # it { expect { subject }.to raise_error({some exception}) }
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,5 @@
1
+ shared_examples_for "included modules" do
2
+ it do
3
+ is_expected.to include *described_class.included_modules
4
+ end
5
+ end
@@ -0,0 +1,15 @@
1
+ def create_mock_table(name, &block)
2
+ raise "no block given." unless block_given?
3
+
4
+ before(:all) do
5
+ m = ActiveRecord::Migration.new
6
+ m.verbose = false
7
+ m.create_table(name, &block)
8
+ end
9
+
10
+ after(:all) do
11
+ m = ActiveRecord::Migration.new
12
+ m.verbose = false
13
+ m.drop_table(name)
14
+ end
15
+ end
@@ -0,0 +1,20 @@
1
+ require "rails_helper"
2
+
3
+ RSpec.describe <%= class_name %>, type: :model do
4
+ create_mock_table(:module_<%= plural_name %>) do |t|
5
+ # any attributes
6
+ t.timestamps
7
+ end
8
+
9
+ class Module<%= class_name.split("::").last %> < ApplicationRecord
10
+ include ::<%= class_name %>
11
+ end
12
+
13
+ describe "Included mix-in" do
14
+ subject do
15
+ Module<%= class_name.split("::").last %>.included_modules
16
+ end
17
+
18
+ it { is_expected.to include described_class }
19
+ end
20
+ end
@@ -0,0 +1,24 @@
1
+ require "active_model_serializers"
2
+ require "generators/rails/serializer_generator"
3
+
4
+ class Rails::ResponseGenerator < Rails::Generators::NamedBase
5
+ source_root File.expand_path("../templates", __FILE__)
6
+
7
+ def create_serializer_file
8
+ if invoke?
9
+ generate :serializer, name
10
+ else
11
+ ::Rails::Command.invoke :destroy, ["serializer", name]
12
+ end
13
+ end
14
+
15
+ def create_response_file
16
+ template "serializer_spec.erb", File.join("spec/serializers", class_path, "#{file_name}_serializer_spec.rb")
17
+ copy_file("active_model_serializers_helper.rb", "spec/support/active_model_serializers_helper.rb") if invoke?
18
+ end
19
+
20
+ private
21
+ def invoke?
22
+ self.behavior == :invoke
23
+ end
24
+ end
@@ -0,0 +1,39 @@
1
+ module ActiveModelSerializersHelper
2
+ def serialize(obj, **options)
3
+ serializer_class = options.delete(:serializer_class) || "#{obj.class.name}Serializer".constantize
4
+ klass = serializer_class.new(obj)
5
+ ActiveModelSerializers::Adapter.create(klass, options)
6
+ end
7
+
8
+ def attributes_as_json(factory)
9
+ factory.attributes.map do |name, value|
10
+ _value =
11
+ case value
12
+ when Time, Date, DateTime
13
+ value.iso8601
14
+ else
15
+ value
16
+ end
17
+ [name, _value]
18
+ end.to_h
19
+ end
20
+ end
21
+
22
+ shared_examples_for "serialize attributes" do
23
+ let(:not_coverd) do
24
+ attrs = factory.attribute_names
25
+ attrs.delete_if do |item|
26
+ item =~ /^(#{include_attrs.join("|")})$/
27
+ end
28
+ attrs.map(&:to_sym)
29
+ end
30
+
31
+ subject { serialized.serializable_hash }
32
+
33
+ it { is_expected.to include *include_attrs }
34
+ it { is_expected.not_to include *not_coverd }
35
+ end
36
+
37
+ RSpec.configure do |config|
38
+ config.include ActiveModelSerializersHelper, type: :serializer
39
+ end
@@ -0,0 +1,35 @@
1
+ require "rails_helper"
2
+
3
+ RSpec.describe <%= class_name %>, type: :serializer do
4
+ let(:klass) do
5
+ Class.new do
6
+ include ActiveModel::Serialization
7
+ include ActiveModel::Model
8
+
9
+ def attributes
10
+ {
11
+ created_at: created_at
12
+ }
13
+ end
14
+
15
+ def attribute_names
16
+ attributes.keys.map(&:to_s)
17
+ end
18
+
19
+ def created_at
20
+ Time.current
21
+ end
22
+ end
23
+ end
24
+
25
+ let(:factory) { klass.new }
26
+
27
+ describe "attributes" do
28
+ let(:serialized) { serialize(factory, serializer_class: described_class) }
29
+ let(:factory_json) { attributes_as_json(factory) }
30
+
31
+ it(:match) do
32
+ expect(serialized.serializable_hash).to include_json(**factory_json)
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,11 @@
1
+ require "rambulance"
2
+
3
+ class Rambulance::SetupGenerator < Rails::Generators::Base
4
+ source_root File.expand_path("../../templates", __FILE__)
5
+
6
+ def copy_rambulance
7
+ copy_file("initializers.rb", "config/initializers/rambulance.rb")
8
+ copy_file("handler.rb", "app/handlers/exceptions_app.rb")
9
+ copy_file("handler_spec.rb", "spec/handlers/exceptions_app_spec.rb")
10
+ end
11
+ end
@@ -0,0 +1,26 @@
1
+ class ExceptionsApp < Rambulance::ExceptionsApp
2
+ %i[
3
+ not_found
4
+ conflict
5
+ unprocessable_entity
6
+ method_not_allowed
7
+ not_implemented
8
+ bad_request
9
+ internal_server_error
10
+ unauthorized
11
+ ].each do |name|
12
+ define_method name do
13
+ render json: message(name)
14
+ end
15
+ end
16
+
17
+ private
18
+ def message(method)
19
+ {
20
+ error: method.to_s.humanize,
21
+ }.tap do |element|
22
+ element[:request] =
23
+ %(#{request&.env&.[]("REQUEST_METHOD")} #{request&.env&.[]("REQUEST_URI")})
24
+ end if defined?(request)
25
+ end
26
+ end
@@ -0,0 +1,39 @@
1
+ require "rails_helper"
2
+
3
+ RSpec.describe ExceptionsApp do
4
+ subject do
5
+ described_class.new
6
+ end
7
+
8
+ context "Defined method that corresponding to HTTP Status" do
9
+ %i[
10
+ not_found
11
+ conflict
12
+ unprocessable_entity
13
+ method_not_allowed
14
+ not_implemented
15
+ bad_request
16
+ internal_server_error
17
+ unauthorized
18
+ ].each do |name|
19
+ it(name) { is_expected.to respond_to name }
20
+ end
21
+ end
22
+
23
+ context "Make message" do
24
+ %i[
25
+ not_found
26
+ conflict
27
+ unprocessable_entity
28
+ method_not_allowed
29
+ not_implemented
30
+ bad_request
31
+ internal_server_error
32
+ unauthorized
33
+ ].each do |name|
34
+ it(name) do
35
+ expect(subject.send(:message, name)).to include error: name.to_s.humanize
36
+ end
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,20 @@
1
+ Rambulance.setup do |config|
2
+
3
+ # @see http://www.rubydoc.info/gems/actionpack-rack-upgrade/ActionController/Rescue
4
+ config.rescue_responses = {
5
+ "ActionController::RoutingError" => :not_found,
6
+ "ActionController::UnknownAction" => :not_found,
7
+ "ActiveRecord::RecordNotFound" => :not_found,
8
+ "ActiveRecord::StaleObjectError" => :conflict,
9
+ "ActiveRecord::RecordInvalid" => :unprocessable_entity,
10
+ "ActiveRecord::RecordNotSaved" => :unprocessable_entity,
11
+ "ActiveRecord::RecordNotUnique" => :conflict,
12
+ "ActionController::MethodNotAllowed" => :method_not_allowed,
13
+ "ActionController::NotImplemented" => :not_implemented,
14
+ "ActionController::InvalidAuthenticityToken" => :unprocessable_entity,
15
+ "AttrExtras::MethodNotImplementedError" => :internal_server_error,
16
+ }
17
+
18
+ config.layout_name = nil
19
+ config.view_path = nil
20
+ end
metadata ADDED
@@ -0,0 +1,192 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: barite
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - weathare
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2017-08-21 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: active_model_serializers
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: attr_extras
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rails
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: 5.1.2
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: 5.1.2
55
+ - !ruby/object:Gem::Dependency
56
+ name: rambulance
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: ammeter
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: sqlite3
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: rspec-rails
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: pry-rails
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: pry-highlight
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ">="
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
139
+ description: RailsRails API patters generator.
140
+ email:
141
+ - fuzuki.close@gmail.com
142
+ executables: []
143
+ extensions: []
144
+ extra_rdoc_files: []
145
+ files:
146
+ - MIT-LICENSE
147
+ - README.md
148
+ - Rakefile
149
+ - lib/barite.rb
150
+ - lib/barite/version.rb
151
+ - lib/generators/concern/controller/controller_generator.rb
152
+ - lib/generators/concern/model/model_generator.rb
153
+ - lib/generators/concern/rspec/rspec_generator.rb
154
+ - lib/generators/concern/templates/base_controller_spec.erb
155
+ - lib/generators/concern/templates/base_model_spec.erb
156
+ - lib/generators/concern/templates/concern.erb
157
+ - lib/generators/concern/templates/controller_spec.erb
158
+ - lib/generators/concern/templates/include_module_example.rb
159
+ - lib/generators/concern/templates/mock_table_helper.rb
160
+ - lib/generators/concern/templates/model_spec.erb
161
+ - lib/generators/rails/response_generator.rb
162
+ - lib/generators/rails/templates/active_model_serializers_helper.rb
163
+ - lib/generators/rails/templates/serializer_spec.erb
164
+ - lib/generators/rambulance/setup/setup_generator.rb
165
+ - lib/generators/rambulance/templates/handler.rb
166
+ - lib/generators/rambulance/templates/handler_spec.rb
167
+ - lib/generators/rambulance/templates/initializers.rb
168
+ homepage: https://github.com/weathare/barite
169
+ licenses:
170
+ - MIT
171
+ metadata: {}
172
+ post_install_message:
173
+ rdoc_options: []
174
+ require_paths:
175
+ - lib
176
+ required_ruby_version: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - ">="
179
+ - !ruby/object:Gem::Version
180
+ version: '0'
181
+ required_rubygems_version: !ruby/object:Gem::Requirement
182
+ requirements:
183
+ - - ">="
184
+ - !ruby/object:Gem::Version
185
+ version: '0'
186
+ requirements: []
187
+ rubyforge_project:
188
+ rubygems_version: 2.6.11
189
+ signing_key:
190
+ specification_version: 4
191
+ summary: RailsRails API patters generator.
192
+ test_files: []