grape_press 0.0.1
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.
- checksums.yaml +7 -0
- data/.gitignore +14 -0
- data/.rspec +2 -0
- data/.travis.yml +3 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +22 -0
- data/README.md +44 -0
- data/Rakefile +7 -0
- data/bin/press +5 -0
- data/grape_press.gemspec +27 -0
- data/lib/grape_press/cli.rb +30 -0
- data/lib/grape_press/configuration.rb +24 -0
- data/lib/grape_press/files.rb +68 -0
- data/lib/grape_press/templates/Gemfile.erb +31 -0
- data/lib/grape_press/templates/Guardfile.erb +6 -0
- data/lib/grape_press/templates/Rakefile.erb +54 -0
- data/lib/grape_press/templates/app/api/api.rb.erb +8 -0
- data/lib/grape_press/templates/app/api/v1/api.rb.erb +16 -0
- data/lib/grape_press/templates/app/application.rb.erb +37 -0
- data/lib/grape_press/templates/bin/console.erb +8 -0
- data/lib/grape_press/templates/config/database_mysql.yml.erb +13 -0
- data/lib/grape_press/templates/config/database_pg.yml.erb +11 -0
- data/lib/grape_press/templates/config/database_sqlite.yml.erb +11 -0
- data/lib/grape_press/templates/config/environment.rb.erb +13 -0
- data/lib/grape_press/templates/config/initializers/active_record.rb.erb +5 -0
- data/lib/grape_press/templates/config/initializers/mongoid.rb.erb +1 -0
- data/lib/grape_press/templates/config/locales/en.yml.erb +8 -0
- data/lib/grape_press/templates/config/mongoid.yml.erb +71 -0
- data/lib/grape_press/templates/config.ru.erb +26 -0
- data/lib/grape_press/templates/dot_rspec.erb +2 -0
- data/lib/grape_press/templates/readme.md.erb +3 -0
- data/lib/grape_press/templates/spec/spec_helper.rb.erb +28 -0
- data/lib/grape_press/templates/spec/spec_helper_ar.rb.erb +49 -0
- data/lib/grape_press/templates/spec/spec_helper_mongoid.rb.erb +46 -0
- data/lib/grape_press/tree.rb +50 -0
- data/lib/grape_press/version.rb +3 -0
- data/lib/grape_press.rb +5 -0
- data/spec/grape_press_spec.rb +11 -0
- data/spec/spec_helper.rb +2 -0
- metadata +155 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 0bbd671aa64207d8186f1c236f87295746d8b210
|
4
|
+
data.tar.gz: 9790924db1e4926ca66b2c7d628f10d5e74be355
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: c3e1d15a6b3288c57a54da8c8bb9036562cdf890d8a14d68362c5906134f41a189f738bf2a08ba447678c70b5d8180cf3bcf14b1df7b1a1ac338f69e28c7233a
|
7
|
+
data.tar.gz: 015a92b7aea3bff03afd868a795a57975d831e060b006a4940385fa6c28cd86a0361039cbd7935bb990088b4e98e752ad8a619721db9a80d45b63d219c5126ab
|
data/.gitignore
ADDED
data/.rspec
ADDED
data/.travis.yml
ADDED
data/Gemfile
ADDED
data/LICENSE.txt
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
Copyright (c) 2014 alexpeachey
|
2
|
+
|
3
|
+
MIT License
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
6
|
+
a copy of this software and associated documentation files (the
|
7
|
+
"Software"), to deal in the Software without restriction, including
|
8
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
9
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
10
|
+
permit persons to whom the Software is furnished to do so, subject to
|
11
|
+
the following conditions:
|
12
|
+
|
13
|
+
The above copyright notice and this permission notice shall be
|
14
|
+
included in all copies or substantial portions of the Software.
|
15
|
+
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
17
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
18
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
19
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
20
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
21
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,44 @@
|
|
1
|
+
# GrapePress
|
2
|
+
|
3
|
+
Create an application starter for Grape API projects.
|
4
|
+
|
5
|
+
## Installation
|
6
|
+
|
7
|
+
Install the gem:
|
8
|
+
|
9
|
+
$ gem install grape_press
|
10
|
+
|
11
|
+
## Usage
|
12
|
+
|
13
|
+
`press new SlickApp`
|
14
|
+
|
15
|
+
You will be asked a few configuration questions, just answer as it suites your application.
|
16
|
+
|
17
|
+
You will then have a new application in `slick_app`.
|
18
|
+
|
19
|
+
Type `rackup` inside the `slick_app` directory to fire up your server.
|
20
|
+
|
21
|
+
## Useful features
|
22
|
+
|
23
|
+
### Rake commands
|
24
|
+
|
25
|
+
`rake routes`
|
26
|
+
`rake spec`
|
27
|
+
|
28
|
+
If you include ActiveRecord
|
29
|
+
`rake db:create`
|
30
|
+
`rake db:drop`
|
31
|
+
`rake db:migrate`
|
32
|
+
`rake db:rollback`
|
33
|
+
|
34
|
+
### A console
|
35
|
+
|
36
|
+
`bin/console`
|
37
|
+
|
38
|
+
## Contributing
|
39
|
+
|
40
|
+
1. Fork it ( https://github.com/Originate/grape_press/fork )
|
41
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
42
|
+
3. Commit your changes (`git commit -am 'Add some feature'`)
|
43
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
44
|
+
5. Create a new Pull Request
|
data/Rakefile
ADDED
data/bin/press
ADDED
data/grape_press.gemspec
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'grape_press/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = 'grape_press'
|
8
|
+
spec.version = GrapePress::VERSION
|
9
|
+
spec.authors = ['alexpeachey']
|
10
|
+
spec.email = ['alex.peachey@gmail.com']
|
11
|
+
spec.summary = %q{Generator for Grape API projects.}
|
12
|
+
spec.description = %q{Generator for Grape API projects.}
|
13
|
+
spec.homepage = 'https://github.com/Originate/grape_press'
|
14
|
+
spec.license = 'MIT'
|
15
|
+
|
16
|
+
spec.files = `git ls-files -z`.split("\x0")
|
17
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
18
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
|
+
spec.require_paths = ['lib']
|
20
|
+
|
21
|
+
spec.add_dependency 'thor', '~> 0.19'
|
22
|
+
spec.add_dependency 'activesupport', '~> 4.1'
|
23
|
+
|
24
|
+
spec.add_development_dependency 'bundler', '~> 1.7'
|
25
|
+
spec.add_development_dependency 'rake', '~> 10.0'
|
26
|
+
spec.add_development_dependency 'rspec', '~> 3.0'
|
27
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
require 'thor'
|
2
|
+
require 'active_support/inflector'
|
3
|
+
require 'grape_press/configuration'
|
4
|
+
require 'grape_press/tree'
|
5
|
+
require 'grape_press/files'
|
6
|
+
|
7
|
+
module GrapePress
|
8
|
+
class Cli < Thor
|
9
|
+
include Thor::Actions
|
10
|
+
include Configuration
|
11
|
+
include Tree
|
12
|
+
include Files
|
13
|
+
|
14
|
+
def self.source_root
|
15
|
+
File.dirname(__FILE__)
|
16
|
+
end
|
17
|
+
|
18
|
+
desc 'new APP', 'Generate a new Grape API Application'
|
19
|
+
def new(name)
|
20
|
+
collect(name)
|
21
|
+
generate_tree
|
22
|
+
generate_files
|
23
|
+
end
|
24
|
+
|
25
|
+
desc 'destroy APP', 'Destroy Application'
|
26
|
+
def destroy(name)
|
27
|
+
remove_dir name.underscore
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module GrapePress
|
2
|
+
module Configuration
|
3
|
+
attr_reader :app_name, :app_class, :active_record, :database, :mongoid
|
4
|
+
|
5
|
+
private
|
6
|
+
|
7
|
+
def collect(name)
|
8
|
+
@app_name = name.underscore
|
9
|
+
@app_class = name.camelize
|
10
|
+
@active_record = yes? 'Use ActiveRecord?'
|
11
|
+
@database = if active_record
|
12
|
+
ask 'Database?', limited_to: ['pg', 'mysql', 'sqlite', 'other']
|
13
|
+
else
|
14
|
+
:none
|
15
|
+
end
|
16
|
+
@mongoid = if active_record
|
17
|
+
false
|
18
|
+
else
|
19
|
+
yes? 'Use Mongoid?'
|
20
|
+
end
|
21
|
+
self
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,68 @@
|
|
1
|
+
module GrapePress
|
2
|
+
module Files
|
3
|
+
private
|
4
|
+
|
5
|
+
def generate_files
|
6
|
+
generate_core_files
|
7
|
+
generate_app_files
|
8
|
+
generate_bin_files
|
9
|
+
generate_config_files
|
10
|
+
generate_spec_files
|
11
|
+
generate_database_files
|
12
|
+
generate_mongoid_files
|
13
|
+
end
|
14
|
+
|
15
|
+
def generate_core_files
|
16
|
+
template File.join('templates', 'readme.md.erb'), File.join(app_name, 'README.md')
|
17
|
+
template File.join('templates', 'config.ru.erb'), File.join(app_name, 'config.ru')
|
18
|
+
template File.join('templates', 'Gemfile.erb'), File.join(app_name, 'Gemfile')
|
19
|
+
template File.join('templates', 'Guardfile.erb'), File.join(app_name, 'Guardfile')
|
20
|
+
template File.join('templates', 'Rakefile.erb'), File.join(app_name, 'Rakefile')
|
21
|
+
template File.join('templates', 'dot_rspec.erb'), File.join(app_name, '.rspec')
|
22
|
+
end
|
23
|
+
|
24
|
+
def generate_app_files
|
25
|
+
template File.join('templates', 'app', 'application.rb.erb'), File.join(app_name, 'app', 'application.rb')
|
26
|
+
template File.join('templates', 'app', 'api', 'api.rb.erb'), File.join(app_name, 'app', 'api', 'api.rb')
|
27
|
+
template File.join('templates', 'app', 'api', 'v1', 'api.rb.erb'), File.join(app_name, 'app', 'api', 'v1', 'api.rb')
|
28
|
+
end
|
29
|
+
|
30
|
+
def generate_bin_files
|
31
|
+
template File.join('templates', 'bin', 'console.erb'), File.join(app_name, 'bin', 'console')
|
32
|
+
chmod File.join(app_name, 'bin', 'console'), 0755
|
33
|
+
end
|
34
|
+
|
35
|
+
def generate_config_files
|
36
|
+
template File.join('templates', 'config', 'environment.rb.erb'), File.join(app_name, 'config', 'environment.rb')
|
37
|
+
template File.join('templates', 'config', 'locales', 'en.yml.erb'), File.join(app_name, 'config', 'locales', 'en.yml')
|
38
|
+
end
|
39
|
+
|
40
|
+
def generate_spec_files
|
41
|
+
if active_record
|
42
|
+
template File.join('templates', 'spec', 'spec_helper_ar.rb.erb'), File.join(app_name, 'spec', 'spec_helper.rb')
|
43
|
+
elsif mongoid
|
44
|
+
template File.join('templates', 'spec', 'spec_helper_mongoid.rb.erb'), File.join(app_name, 'spec', 'spec_helper.rb')
|
45
|
+
else
|
46
|
+
template File.join('templates', 'spec', 'spec_helper.rb.erb'), File.join(app_name, 'spec', 'spec_helper.rb')
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
def generate_database_files
|
51
|
+
return unless active_record
|
52
|
+
template File.join('templates', 'config', 'initializers', 'active_record.rb.erb'), File.join(app_name, 'config', 'initializers', 'active_record.rb')
|
53
|
+
if database == 'pg'
|
54
|
+
template File.join('templates', 'config', 'database_pg.yml.erb'), File.join(app_name, 'config', 'database.yml')
|
55
|
+
elsif database == 'mysql'
|
56
|
+
template File.join('templates', 'config', 'database_mysql.yml.erb'), File.join(app_name, 'config', 'database.yml')
|
57
|
+
elsif database == 'sqlite'
|
58
|
+
template File.join('templates', 'config', 'database_sqlite.yml.erb'), File.join(app_name, 'config', 'database.yml')
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
def generate_mongoid_files
|
63
|
+
return unless mongoid
|
64
|
+
template File.join('templates', 'config', 'initializers', 'mongoid.rb.erb'), File.join(app_name, 'config', 'initializers', 'mongoid.rb')
|
65
|
+
template File.join('templates', 'config', 'mongoid.yml.erb'), File.join(app_name, 'config', 'mongoid.yml')
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
source 'https://rubygems.org'
|
2
|
+
|
3
|
+
gem 'grape', '~> 0.9.0'
|
4
|
+
gem 'grape-entity'
|
5
|
+
gem 'grape-swagger'
|
6
|
+
gem 'rack-cors'
|
7
|
+
gem 'rake'
|
8
|
+
<% if active_record %>gem 'activerecord', '~> 4.1'<% end %>
|
9
|
+
<% if database == 'pg' %>gem 'pg'<% end %>
|
10
|
+
<% if database == 'mysql' %>gem 'mysql2'<% end %>
|
11
|
+
<% if database == 'sqlite' %>gem 'sqlite3'<% end %>
|
12
|
+
<% if mongoid %>gem 'mongoid'<% end %>
|
13
|
+
|
14
|
+
group :development, :test do
|
15
|
+
gem 'dotenv'
|
16
|
+
gem 'rspec'
|
17
|
+
gem 'rack-test'
|
18
|
+
gem 'simplecov'
|
19
|
+
gem 'simplecov-html'
|
20
|
+
gem 'guard'
|
21
|
+
gem 'guard-rspec'
|
22
|
+
gem 'rb-inotify', require: false
|
23
|
+
gem 'rb-fsevent', require: false
|
24
|
+
gem 'rb-fchange', require: false
|
25
|
+
gem 'rubocop', require: false
|
26
|
+
<% if active_record %>
|
27
|
+
gem 'factory_girl'
|
28
|
+
gem 'database_cleaner'
|
29
|
+
<% end %>
|
30
|
+
end
|
31
|
+
|
@@ -0,0 +1,54 @@
|
|
1
|
+
#!/usr/bin/env rake
|
2
|
+
$LOAD_PATH.unshift File.expand_path('../app', __FILE__)
|
3
|
+
require 'application'
|
4
|
+
|
5
|
+
|
6
|
+
require 'rspec/core/rake_task'
|
7
|
+
RSpec::Core::RakeTask.new(:spec)
|
8
|
+
task :default => :spec
|
9
|
+
|
10
|
+
desc 'API Routes'
|
11
|
+
task :routes do
|
12
|
+
API.routes.each do |api|
|
13
|
+
method = api.route_method.ljust(10)
|
14
|
+
path = api.route_path
|
15
|
+
puts " #{method} #{path}"
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
<% if active_record %>
|
20
|
+
MIGRATIONS_DIR = File.join(APP_ROOT, 'db', 'migrations')
|
21
|
+
|
22
|
+
namespace :db do
|
23
|
+
desc 'Create the database in the current GRAPE_ENV'
|
24
|
+
task :create do
|
25
|
+
config = YAML.load(File.read(File.join(APP_ROOT, 'config', 'database.yml')))[GRAPE_ENV.to_s]
|
26
|
+
ActiveRecord::Base.establish_connection config.merge(database: nil)
|
27
|
+
ActiveRecord::Base.connection.create_database config['database']
|
28
|
+
ActiveRecord::Base.establish_connection config
|
29
|
+
end
|
30
|
+
|
31
|
+
desc 'Drops the database in the current GRAPE_ENV'
|
32
|
+
task :drop do
|
33
|
+
config = YAML.load(File.read(File.join(APP_ROOT, 'config', 'database.yml')))[GRAPE_ENV.to_s]
|
34
|
+
ActiveRecord::Base.connection.drop_database config['database']
|
35
|
+
end
|
36
|
+
|
37
|
+
desc 'Migrate the database (options: VERSION=x).'
|
38
|
+
task :migrate do
|
39
|
+
ActiveRecord::Migration.verbose = true
|
40
|
+
ActiveRecord::Migrator.migrate MIGRATIONS_DIR, ENV['VERSION'] ? ENV['VERSION'].to_i : nil
|
41
|
+
end
|
42
|
+
|
43
|
+
desc 'Rolls the schema back to the previous version (specify steps w/ STEP=n).'
|
44
|
+
task :rollback do
|
45
|
+
step = ENV['STEP'] ? ENV['STEP'].to_i : 1
|
46
|
+
ActiveRecord::Migrator.rollback MIGRATIONS_DIR, step
|
47
|
+
end
|
48
|
+
|
49
|
+
desc "Retrieves the current schema version number"
|
50
|
+
task :version do
|
51
|
+
puts "Current version: #{ActiveRecord::Migrator.current_version}"
|
52
|
+
end
|
53
|
+
end
|
54
|
+
<% end %>
|
@@ -0,0 +1,37 @@
|
|
1
|
+
APP_ROOT = File.expand_path('../..', __FILE__)
|
2
|
+
GRAPE_ROOT = APP_ROOT
|
3
|
+
|
4
|
+
# Autoloading & Path Management
|
5
|
+
$LOAD_PATH.unshift APP_ROOT unless $LOAD_PATH.include?(APP_ROOT)
|
6
|
+
app_path = File.join(APP_ROOT, 'app')
|
7
|
+
$LOAD_PATH.unshift app unless $LOAD_PATH.include?(app_path)
|
8
|
+
|
9
|
+
# Load the Environment
|
10
|
+
require 'config/environment'
|
11
|
+
|
12
|
+
# Autoload the app
|
13
|
+
require 'active_support/all'
|
14
|
+
Dir[File.join(APP_ROOT, 'app', '*')].select { |d| File.directory? d }.each do |directory|
|
15
|
+
ActiveSupport::Dependencies.autoload_paths << directory
|
16
|
+
end
|
17
|
+
|
18
|
+
# Load any initializers
|
19
|
+
Dir[File.join(APP_ROOT, 'config', 'initializers', '**', '*.rb')].each { |f| require f }
|
20
|
+
|
21
|
+
# Eager load the app outside of development/test
|
22
|
+
unless [:development, :test].include? GRAPE_ENV
|
23
|
+
Dir[File.join(APP_ROOT, 'app', '**', '*.rb')].each do |file|
|
24
|
+
file.gsub(File.join(APP_ROOT, 'app', '*'), '')[0..-4].
|
25
|
+
split(File::SEPARATOR).
|
26
|
+
map(&:camelcase).
|
27
|
+
map { |f| f == 'Api' ? f.upcase : f }.
|
28
|
+
join('::').
|
29
|
+
constantize
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
# Configure I18n
|
34
|
+
I18n.enforce_available_locales = true
|
35
|
+
I18n.available_locales = :en
|
36
|
+
I18n.default_locale = :en
|
37
|
+
I18n.load_path += Dir[File.join(APP_ROOT, 'config', 'locales', '*.yml'), File.join(APP_ROOT, 'config', 'locals', '*.rb')]
|
@@ -0,0 +1,13 @@
|
|
1
|
+
# Environment - For env specific code only
|
2
|
+
|
3
|
+
# Environment Constants
|
4
|
+
GRAPE_ENV ||= (ENV['GRAPE_ENV'] || ENV['RACK_ENV'] || :development).to_sym
|
5
|
+
RACK_ENV = GRAPE_ENV
|
6
|
+
|
7
|
+
# Load Environment Specific gems
|
8
|
+
require 'bundler'
|
9
|
+
Bundler.require :default, GRAPE_ENV
|
10
|
+
|
11
|
+
# Load Environment Specific Settings
|
12
|
+
specific_environment = File.join(APP_ROOT, 'config', 'environments', "#{GRAPE_ENV}.rb")
|
13
|
+
require specific_environment if File.exist? specific_environment
|
@@ -0,0 +1 @@
|
|
1
|
+
Mongoid.load!(File.join(APP_ROOT, 'config/mongoid.yml'), GRAPE_ENV)
|
@@ -0,0 +1,8 @@
|
|
1
|
+
# Files in the config/locales directory are used for internationalization
|
2
|
+
# and are automatically loaded. If you want to use locales other
|
3
|
+
# than English, add the necessary files in this directory.
|
4
|
+
#
|
5
|
+
# To learn more, please read the Rails Internationalization guide
|
6
|
+
# available at http://guides.rubyonrails.org/i18n.html.
|
7
|
+
|
8
|
+
en:
|
@@ -0,0 +1,71 @@
|
|
1
|
+
development:
|
2
|
+
# Configure available database sessions. (required)
|
3
|
+
sessions:
|
4
|
+
# Defines the default session. (required)
|
5
|
+
default:
|
6
|
+
# Defines the name of the default database that Mongoid can connect to.
|
7
|
+
# (required).
|
8
|
+
database: <%= app_name %>_development
|
9
|
+
# Provides the hosts the default session can connect to. Must be an array
|
10
|
+
# of host:port pairs. (required)
|
11
|
+
hosts:
|
12
|
+
- localhost:27017
|
13
|
+
options:
|
14
|
+
# Change the default write concern. (default = { w: 1 })
|
15
|
+
# write:
|
16
|
+
# w: 1
|
17
|
+
|
18
|
+
# Change the default consistency model to primary, secondary.
|
19
|
+
# 'secondary' will send reads to secondaries, 'primary' sends everything
|
20
|
+
# to master. (default: primary)
|
21
|
+
# read: secondary_preferred
|
22
|
+
|
23
|
+
# How many times Moped should attempt to retry an operation after
|
24
|
+
# failure. (default: 30)
|
25
|
+
# max_retries: 30
|
26
|
+
|
27
|
+
# The time in seconds that Moped should wait before retrying an
|
28
|
+
# operation on failure. (default: 1)
|
29
|
+
# retry_interval: 1
|
30
|
+
# Configure Mongoid specific options. (optional)
|
31
|
+
options:
|
32
|
+
# Includes the root model name in json serialization. (default: false)
|
33
|
+
# include_root_in_json: false
|
34
|
+
|
35
|
+
# Include the _type field in serializaion. (default: false)
|
36
|
+
# include_type_for_serialization: false
|
37
|
+
|
38
|
+
# Preload all models in development, needed when models use
|
39
|
+
# inheritance. (default: false)
|
40
|
+
# preload_models: false
|
41
|
+
|
42
|
+
# Protect id and type from mass assignment. (default: true)
|
43
|
+
# protect_sensitive_fields: true
|
44
|
+
|
45
|
+
# Raise an error when performing a #find and the document is not found.
|
46
|
+
# (default: true)
|
47
|
+
raise_not_found_error: false
|
48
|
+
|
49
|
+
# Raise an error when defining a scope with the same name as an
|
50
|
+
# existing method. (default: false)
|
51
|
+
# scope_overwrite_exception: false
|
52
|
+
|
53
|
+
# Use Active Support's time zone in conversions. (default: true)
|
54
|
+
# use_activesupport_time_zone: true
|
55
|
+
|
56
|
+
# Ensure all times are UTC in the app side. (default: false)
|
57
|
+
# use_utc: false
|
58
|
+
test:
|
59
|
+
sessions:
|
60
|
+
default:
|
61
|
+
database: <%= app_name %>_test
|
62
|
+
hosts:
|
63
|
+
- localhost:27017
|
64
|
+
options:
|
65
|
+
read: primary
|
66
|
+
# In the test environment we lower the retries and retry interval to
|
67
|
+
# low amounts for fast failures.
|
68
|
+
max_retries: 1
|
69
|
+
retry_interval: 0
|
70
|
+
options:
|
71
|
+
raise_not_found_error: false
|
@@ -0,0 +1,26 @@
|
|
1
|
+
# Rack config file
|
2
|
+
# --------------------------------------------------
|
3
|
+
#
|
4
|
+
# Only Rack specific code in here
|
5
|
+
#
|
6
|
+
# Place all application specific code in app/application.rb
|
7
|
+
# -------------------------------------------------
|
8
|
+
|
9
|
+
|
10
|
+
# Handle CORS Settings
|
11
|
+
# --------------------
|
12
|
+
require 'rack/cors'
|
13
|
+
|
14
|
+
use Rack::Cors do
|
15
|
+
allow do
|
16
|
+
origins '*'
|
17
|
+
resource '*', headers: :any, methods: [:get, :post, :put, :delete, :patch, :options]
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
# Run the API
|
22
|
+
# ---------------------
|
23
|
+
app = File.expand_path('../app', __FILE__)
|
24
|
+
$LOAD_PATH.unshift(app) unless $LOAD_PATH.include?(app)
|
25
|
+
require 'application'
|
26
|
+
run API::API
|
@@ -0,0 +1,28 @@
|
|
1
|
+
ENV['RACK_ENV'] ||= 'test'
|
2
|
+
ENV['GRAPE_ENV'] ||= ENV['RACK_ENV']
|
3
|
+
|
4
|
+
if ENV['COVERAGE']
|
5
|
+
require 'simplecov'
|
6
|
+
SimpleCov.formatter = SimpleCov::Formatter::HTMLFormatter
|
7
|
+
SimpleCov.start
|
8
|
+
end
|
9
|
+
|
10
|
+
app_path = File.expand_path('../../app', __FILE__)
|
11
|
+
$LOAD_PATH.unshift(app_path) unless $LOAD_PATH.include?(app_path)
|
12
|
+
require 'application'
|
13
|
+
|
14
|
+
require 'rack/test'
|
15
|
+
|
16
|
+
Dir[File.join(APP_ROOT, 'spec', 'support', '**', '*.rb')].each { |f| require f }
|
17
|
+
|
18
|
+
RSpec.configure do |config|
|
19
|
+
config.mock_with :rspec
|
20
|
+
config.run_all_when_everything_filtered = true
|
21
|
+
config.filter_run :focus
|
22
|
+
config.order = 'random'
|
23
|
+
config.include Rack::Test::Methods
|
24
|
+
end
|
25
|
+
|
26
|
+
def app
|
27
|
+
API
|
28
|
+
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
ENV['RACK_ENV'] ||= 'test'
|
2
|
+
ENV['GRAPE_ENV'] ||= ENV['RACK_ENV']
|
3
|
+
|
4
|
+
if ENV['COVERAGE']
|
5
|
+
require 'simplecov'
|
6
|
+
SimpleCov.formatter = SimpleCov::Formatter::HTMLFormatter
|
7
|
+
SimpleCov.start
|
8
|
+
end
|
9
|
+
|
10
|
+
app_path = File.expand_path('../../app', __FILE__)
|
11
|
+
$LOAD_PATH.unshift(app_path) unless $LOAD_PATH.include?(app_path)
|
12
|
+
require 'application'
|
13
|
+
|
14
|
+
require 'rack/test'
|
15
|
+
require 'factory_girl'
|
16
|
+
require 'database_cleaner'
|
17
|
+
require 'rspec/rails/extensions/active_record/proxy'
|
18
|
+
|
19
|
+
Dir[File.join(APP_ROOT, 'spec', 'support', '**', '*.rb')].each { |f| require f }
|
20
|
+
Dir[File.join(APP_ROOT, 'spec', 'factories', '**', '*.rb')].each { |f| require f }
|
21
|
+
|
22
|
+
ActiveRecord::Migration.check_pending!
|
23
|
+
|
24
|
+
DatabaseCleaner.strategy = :truncation
|
25
|
+
|
26
|
+
RSpec.configure do |config|
|
27
|
+
config.mock_with :rspec
|
28
|
+
config.run_all_when_everything_filtered = true
|
29
|
+
config.filter_run :focus
|
30
|
+
config.order = 'random'
|
31
|
+
config.include Rack::Test::Methods
|
32
|
+
config.include FactoryGirl::Syntax::Methods
|
33
|
+
|
34
|
+
config.before(:suite) do
|
35
|
+
DatabaseCleaner.clean
|
36
|
+
end
|
37
|
+
|
38
|
+
config.before(:each) do
|
39
|
+
DatabaseCleaner.start
|
40
|
+
end
|
41
|
+
|
42
|
+
config.after(:each) do
|
43
|
+
DatabaseCleaner.clean
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
def app
|
48
|
+
API
|
49
|
+
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
ENV['RACK_ENV'] ||= 'test'
|
2
|
+
ENV['GRAPE_ENV'] ||= ENV['RACK_ENV']
|
3
|
+
|
4
|
+
if ENV['COVERAGE']
|
5
|
+
require 'simplecov'
|
6
|
+
SimpleCov.formatter = SimpleCov::Formatter::HTMLFormatter
|
7
|
+
SimpleCov.start
|
8
|
+
end
|
9
|
+
|
10
|
+
app_path = File.expand_path('../../app', __FILE__)
|
11
|
+
$LOAD_PATH.unshift(app_path) unless $LOAD_PATH.include?(app_path)
|
12
|
+
require 'application'
|
13
|
+
|
14
|
+
require 'rack/test'
|
15
|
+
require 'factory_girl'
|
16
|
+
require 'database_cleaner'
|
17
|
+
|
18
|
+
Dir[File.join(APP_ROOT, 'spec', 'support', '**', '*.rb')].each { |f| require f }
|
19
|
+
Dir[File.join(APP_ROOT, 'spec', 'factories', '**', '*.rb')].each { |f| require f }
|
20
|
+
|
21
|
+
DatabaseCleaner.strategy = :truncation
|
22
|
+
|
23
|
+
RSpec.configure do |config|
|
24
|
+
config.mock_with :rspec
|
25
|
+
config.run_all_when_everything_filtered = true
|
26
|
+
config.filter_run :focus
|
27
|
+
config.order = 'random'
|
28
|
+
config.include Rack::Test::Methods
|
29
|
+
config.include FactoryGirl::Syntax::Methods
|
30
|
+
|
31
|
+
config.before(:suite) do
|
32
|
+
DatabaseCleaner.clean
|
33
|
+
end
|
34
|
+
|
35
|
+
config.before(:each) do
|
36
|
+
DatabaseCleaner.start
|
37
|
+
end
|
38
|
+
|
39
|
+
config.after(:each) do
|
40
|
+
DatabaseCleaner.clean
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
def app
|
45
|
+
API
|
46
|
+
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
module GrapePress
|
2
|
+
module Tree
|
3
|
+
private
|
4
|
+
|
5
|
+
def generate_tree
|
6
|
+
generate_app_tree
|
7
|
+
generate_bin_tree
|
8
|
+
generate_config_tree
|
9
|
+
generate_spec_tree
|
10
|
+
generate_database_tree
|
11
|
+
generate_models_tree
|
12
|
+
end
|
13
|
+
|
14
|
+
def generate_app_tree
|
15
|
+
empty_directory app_name
|
16
|
+
empty_directory File.join(app_name, 'app')
|
17
|
+
empty_directory File.join(app_name, 'app', 'api')
|
18
|
+
empty_directory File.join(app_name, 'app', 'api', 'v1')
|
19
|
+
empty_directory File.join(app_name, 'app', 'api', 'v1', 'entities')
|
20
|
+
end
|
21
|
+
|
22
|
+
def generate_bin_tree
|
23
|
+
empty_directory File.join(app_name, 'bin')
|
24
|
+
end
|
25
|
+
|
26
|
+
def generate_config_tree
|
27
|
+
empty_directory File.join(app_name, 'config')
|
28
|
+
empty_directory File.join(app_name, 'config', 'environments')
|
29
|
+
empty_directory File.join(app_name, 'config', 'initializers')
|
30
|
+
empty_directory File.join(app_name, 'config', 'locales')
|
31
|
+
end
|
32
|
+
|
33
|
+
def generate_spec_tree
|
34
|
+
empty_directory File.join(app_name, 'spec')
|
35
|
+
empty_directory File.join(app_name, 'spec', 'support')
|
36
|
+
end
|
37
|
+
|
38
|
+
def generate_database_tree
|
39
|
+
return unless active_record
|
40
|
+
empty_directory File.join(app_name, 'db')
|
41
|
+
empty_directory File.join(app_name, 'db', 'migrations')
|
42
|
+
end
|
43
|
+
|
44
|
+
def generate_models_tree
|
45
|
+
return unless active_record || mongoid
|
46
|
+
empty_directory File.join(app_name, 'app', 'models')
|
47
|
+
empty_directory File.join(app_name, 'spec', 'models')
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
data/lib/grape_press.rb
ADDED
data/spec/spec_helper.rb
ADDED
metadata
ADDED
@@ -0,0 +1,155 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: grape_press
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- alexpeachey
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2014-09-09 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: thor
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0.19'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0.19'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: activesupport
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '4.1'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '4.1'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: bundler
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '1.7'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '1.7'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rake
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '10.0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '10.0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: rspec
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '3.0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '3.0'
|
83
|
+
description: Generator for Grape API projects.
|
84
|
+
email:
|
85
|
+
- alex.peachey@gmail.com
|
86
|
+
executables:
|
87
|
+
- press
|
88
|
+
extensions: []
|
89
|
+
extra_rdoc_files: []
|
90
|
+
files:
|
91
|
+
- ".gitignore"
|
92
|
+
- ".rspec"
|
93
|
+
- ".travis.yml"
|
94
|
+
- Gemfile
|
95
|
+
- LICENSE.txt
|
96
|
+
- README.md
|
97
|
+
- Rakefile
|
98
|
+
- bin/press
|
99
|
+
- grape_press.gemspec
|
100
|
+
- lib/grape_press.rb
|
101
|
+
- lib/grape_press/cli.rb
|
102
|
+
- lib/grape_press/configuration.rb
|
103
|
+
- lib/grape_press/files.rb
|
104
|
+
- lib/grape_press/templates/Gemfile.erb
|
105
|
+
- lib/grape_press/templates/Guardfile.erb
|
106
|
+
- lib/grape_press/templates/Rakefile.erb
|
107
|
+
- lib/grape_press/templates/app/api/api.rb.erb
|
108
|
+
- lib/grape_press/templates/app/api/v1/api.rb.erb
|
109
|
+
- lib/grape_press/templates/app/application.rb.erb
|
110
|
+
- lib/grape_press/templates/bin/console.erb
|
111
|
+
- lib/grape_press/templates/config.ru.erb
|
112
|
+
- lib/grape_press/templates/config/database_mysql.yml.erb
|
113
|
+
- lib/grape_press/templates/config/database_pg.yml.erb
|
114
|
+
- lib/grape_press/templates/config/database_sqlite.yml.erb
|
115
|
+
- lib/grape_press/templates/config/environment.rb.erb
|
116
|
+
- lib/grape_press/templates/config/initializers/active_record.rb.erb
|
117
|
+
- lib/grape_press/templates/config/initializers/mongoid.rb.erb
|
118
|
+
- lib/grape_press/templates/config/locales/en.yml.erb
|
119
|
+
- lib/grape_press/templates/config/mongoid.yml.erb
|
120
|
+
- lib/grape_press/templates/dot_rspec.erb
|
121
|
+
- lib/grape_press/templates/readme.md.erb
|
122
|
+
- lib/grape_press/templates/spec/spec_helper.rb.erb
|
123
|
+
- lib/grape_press/templates/spec/spec_helper_ar.rb.erb
|
124
|
+
- lib/grape_press/templates/spec/spec_helper_mongoid.rb.erb
|
125
|
+
- lib/grape_press/tree.rb
|
126
|
+
- lib/grape_press/version.rb
|
127
|
+
- spec/grape_press_spec.rb
|
128
|
+
- spec/spec_helper.rb
|
129
|
+
homepage: https://github.com/Originate/grape_press
|
130
|
+
licenses:
|
131
|
+
- MIT
|
132
|
+
metadata: {}
|
133
|
+
post_install_message:
|
134
|
+
rdoc_options: []
|
135
|
+
require_paths:
|
136
|
+
- lib
|
137
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
138
|
+
requirements:
|
139
|
+
- - ">="
|
140
|
+
- !ruby/object:Gem::Version
|
141
|
+
version: '0'
|
142
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
143
|
+
requirements:
|
144
|
+
- - ">="
|
145
|
+
- !ruby/object:Gem::Version
|
146
|
+
version: '0'
|
147
|
+
requirements: []
|
148
|
+
rubyforge_project:
|
149
|
+
rubygems_version: 2.2.2
|
150
|
+
signing_key:
|
151
|
+
specification_version: 4
|
152
|
+
summary: Generator for Grape API projects.
|
153
|
+
test_files:
|
154
|
+
- spec/grape_press_spec.rb
|
155
|
+
- spec/spec_helper.rb
|