sanji 1.0.0.pre
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/README.md +3 -0
- data/bin/sanji +14 -0
- data/lib/sanji/app_builder.rb +59 -0
- data/lib/sanji/app_generator.rb +39 -0
- data/lib/sanji/assistant.rb +96 -0
- data/lib/sanji/recipe.rb +36 -0
- data/lib/sanji/recipes/annotate.rb +11 -0
- data/lib/sanji/recipes/cleanup.rb +19 -0
- data/lib/sanji/recipes/controllers.rb +80 -0
- data/lib/sanji/recipes/devise.rb +15 -0
- data/lib/sanji/recipes/draper.rb +14 -0
- data/lib/sanji/recipes/figaro.rb +22 -0
- data/lib/sanji/recipes/frontend.rb +47 -0
- data/lib/sanji/recipes/haml.rb +11 -0
- data/lib/sanji/recipes/paloma.rb +9 -0
- data/lib/sanji/recipes/postgresql.rb +23 -0
- data/lib/sanji/recipes/reform.rb +12 -0
- data/lib/sanji/recipes/seedbank.rb +12 -0
- data/lib/sanji/recipes/setup.rb +25 -0
- data/lib/sanji/recipes/simple_gems.rb +11 -0
- data/lib/sanji/utilities/text.rb +37 -0
- data/lib/sanji.rb +25 -0
- metadata +66 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: db57a4e0739187f622d2dfd0e997135ac62bb85d
|
4
|
+
data.tar.gz: fa9dc9a29f35da36a0cd46150927a579bfda400e
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 399f7e0e08d027a55c717a2bdcd0522adb6433e9b79d3f369a0ee14f5d8c3ddc583f584daaba233bfc9ec25f707bcbfe7cc2a57f0d247ce5c07bbf10d7c05e61
|
7
|
+
data.tar.gz: 18aed75ec1c1fe017eb316bf603c206ed6e6ac705c1630aec79232743ede32923a7200eb40c1412ec8cd8ff159d69c5660f1e5952b4f94f25547f2ffc0b378c9
|
data/README.md
ADDED
data/bin/sanji
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'sanji'
|
4
|
+
|
5
|
+
templates_root =
|
6
|
+
File.expand_path(File.join('..', 'templates'), File.dirname(__FILE__))
|
7
|
+
|
8
|
+
Sanji::AppGenerator.source_root templates_root
|
9
|
+
|
10
|
+
Sanji::AppGenerator.source_paths <<
|
11
|
+
Rails::Generators::AppGenerator.source_root <<
|
12
|
+
templates_root
|
13
|
+
|
14
|
+
Sanji::AppGenerator.start
|
@@ -0,0 +1,59 @@
|
|
1
|
+
module Sanji
|
2
|
+
class AppBuilder < Rails::AppBuilder
|
3
|
+
|
4
|
+
RECIPES = [
|
5
|
+
:Setup,
|
6
|
+
:Annotate,
|
7
|
+
:Draper,
|
8
|
+
:Figaro,
|
9
|
+
:Haml,
|
10
|
+
:Paloma,
|
11
|
+
:Postgresql,
|
12
|
+
:Reform,
|
13
|
+
:Seedbank,
|
14
|
+
:Frontend,
|
15
|
+
:SimpleGems,
|
16
|
+
:Controllers,
|
17
|
+
:Devise,
|
18
|
+
:Cleanup
|
19
|
+
]
|
20
|
+
|
21
|
+
def after_create_tasks
|
22
|
+
RECIPES.each do |name|
|
23
|
+
self.get_recipe_instance(name).run_after_create
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
def after_bundle_tasks
|
28
|
+
RECIPES.each do |name|
|
29
|
+
self.get_recipe_instance(name).run_after_bundle
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
def after_everything_tasks
|
34
|
+
RECIPES.each do |name|
|
35
|
+
self.get_recipe_instance(name).run_after_everything
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
|
40
|
+
|
41
|
+
protected
|
42
|
+
|
43
|
+
def get_recipe_instance name
|
44
|
+
recipe = self.recipe_instances[name]
|
45
|
+
return recipe if recipe
|
46
|
+
|
47
|
+
recipe_class = ::Sanji::Recipes.const_get name
|
48
|
+
recipe = recipe_class.new self
|
49
|
+
|
50
|
+
self.recipe_instances[name] = recipe
|
51
|
+
recipe
|
52
|
+
end
|
53
|
+
|
54
|
+
def recipe_instances
|
55
|
+
@recipe_instances ||= {}
|
56
|
+
end
|
57
|
+
|
58
|
+
end
|
59
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
require 'rails/generators'
|
2
|
+
require 'rails/generators/rails/app/app_generator'
|
3
|
+
|
4
|
+
module Sanji
|
5
|
+
class AppGenerator < Rails::Generators::AppGenerator
|
6
|
+
|
7
|
+
def finish_template
|
8
|
+
invoke :sanji_after_create_tasks
|
9
|
+
super
|
10
|
+
end
|
11
|
+
|
12
|
+
def run_after_bundle_callbacks
|
13
|
+
invoke :sanji_after_bundle_tasks
|
14
|
+
super
|
15
|
+
invoke :sanji_after_everything_tasks
|
16
|
+
end
|
17
|
+
|
18
|
+
def sanji_after_create_tasks
|
19
|
+
build :after_create_tasks
|
20
|
+
end
|
21
|
+
|
22
|
+
def sanji_after_bundle_tasks
|
23
|
+
build :after_bundle_tasks
|
24
|
+
end
|
25
|
+
|
26
|
+
def sanji_after_everything_tasks
|
27
|
+
build :after_everything_tasks
|
28
|
+
end
|
29
|
+
|
30
|
+
|
31
|
+
|
32
|
+
protected
|
33
|
+
|
34
|
+
def get_builder_class
|
35
|
+
Sanji::AppBuilder
|
36
|
+
end
|
37
|
+
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,96 @@
|
|
1
|
+
class Sanji::Assistant
|
2
|
+
|
3
|
+
attr_reader :builder
|
4
|
+
|
5
|
+
def initialize recipe, builder
|
6
|
+
@recipe = recipe
|
7
|
+
@builder = builder
|
8
|
+
end
|
9
|
+
|
10
|
+
def method_missing name, *args, &block
|
11
|
+
self.builder.send name, *args, &block
|
12
|
+
end
|
13
|
+
|
14
|
+
|
15
|
+
|
16
|
+
def text &block
|
17
|
+
Sanji::Utilities::Text.create &block
|
18
|
+
end
|
19
|
+
|
20
|
+
def generator name, value
|
21
|
+
self.builder.insert_into_file 'config/application.rb',
|
22
|
+
self.text { |t| t.indent(3).puts "g.#{name} #{value}" },
|
23
|
+
:after => "# sanji-generators\n"
|
24
|
+
end
|
25
|
+
|
26
|
+
|
27
|
+
# `block` will have an Sanji::Utilities::Text instance as an argument.
|
28
|
+
def application_config &block
|
29
|
+
config = self.text &block
|
30
|
+
|
31
|
+
self.builder.insert_into_file 'config/application.rb', config,
|
32
|
+
:after => "class Application < Rails::Application\n"
|
33
|
+
end
|
34
|
+
|
35
|
+
def bundle_exec command = ''
|
36
|
+
self.builder.run "bundle exec #{command}"
|
37
|
+
end
|
38
|
+
|
39
|
+
def add_gem name, version_or_options = nil, extra = nil
|
40
|
+
first_arg =
|
41
|
+
if version_or_options.is_a? String
|
42
|
+
"'#{version_or_options}'"
|
43
|
+
else
|
44
|
+
version_or_options.to_s.gsub /\{|\}/, ''
|
45
|
+
end
|
46
|
+
|
47
|
+
second_arg = extra.to_s.gsub(/\{|\}/, '') if extra
|
48
|
+
|
49
|
+
values = ["'#{name}'", first_arg, second_arg].reject &:blank?
|
50
|
+
entry = values.join ', '
|
51
|
+
|
52
|
+
self.builder.insert_into_file 'Gemfile', :after => "# sanji-gems\n" do
|
53
|
+
"gem #{entry}\n"
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
def remove_gem name
|
58
|
+
self.builder.gsub_file 'Gemfile',
|
59
|
+
Regexp.new("^\\s*gem ('|\")#{name}('|\").*\\n"), ''
|
60
|
+
end
|
61
|
+
|
62
|
+
def delete_file filename
|
63
|
+
self.builder.run "rm #{filename}"
|
64
|
+
end
|
65
|
+
|
66
|
+
def log_start method_name
|
67
|
+
self.say "start ##{method_name}"
|
68
|
+
end
|
69
|
+
|
70
|
+
def log_end method_name
|
71
|
+
self.say "end ##{method_name}"
|
72
|
+
end
|
73
|
+
|
74
|
+
def say text
|
75
|
+
self.builder.say recipe_message(text), Thor::Shell::Color::YELLOW
|
76
|
+
end
|
77
|
+
|
78
|
+
def ask question
|
79
|
+
self.builder.ask recipe_message(question)
|
80
|
+
end
|
81
|
+
|
82
|
+
def yes? question
|
83
|
+
self.builder.yes? recipe_message("#{question} (y/n)")
|
84
|
+
end
|
85
|
+
|
86
|
+
def no? question
|
87
|
+
self.builder.no? recipe_message("#{question} (y/n)")
|
88
|
+
end
|
89
|
+
|
90
|
+
private
|
91
|
+
|
92
|
+
def recipe_message message = ''
|
93
|
+
"#{@recipe.class.name} -> #{message}"
|
94
|
+
end
|
95
|
+
|
96
|
+
end
|
data/lib/sanji/recipe.rb
ADDED
@@ -0,0 +1,36 @@
|
|
1
|
+
class Sanji::Recipe
|
2
|
+
|
3
|
+
attr_reader :a
|
4
|
+
|
5
|
+
def initialize builder
|
6
|
+
@a = Sanji::Assistant.new self, builder
|
7
|
+
end
|
8
|
+
|
9
|
+
def run_after_create
|
10
|
+
a.log_start :after_create
|
11
|
+
self.after_create
|
12
|
+
a.log_end :after_create
|
13
|
+
end
|
14
|
+
|
15
|
+
def run_after_bundle
|
16
|
+
a.log_start :after_bundle
|
17
|
+
self.after_bundle
|
18
|
+
a.log_end :after_bundle
|
19
|
+
end
|
20
|
+
|
21
|
+
def run_after_everything
|
22
|
+
a.log_start :after_everything
|
23
|
+
self.after_everything
|
24
|
+
a.log_end :after_everything
|
25
|
+
end
|
26
|
+
|
27
|
+
def after_create
|
28
|
+
end
|
29
|
+
|
30
|
+
def after_bundle
|
31
|
+
end
|
32
|
+
|
33
|
+
def after_everything
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
class Sanji::Recipes::Cleanup < Sanji::Recipe
|
2
|
+
|
3
|
+
def after_everything
|
4
|
+
# remove all helper comments from Setup recipe.
|
5
|
+
[
|
6
|
+
'config/application.rb',
|
7
|
+
'Gemfile'
|
8
|
+
].each { |file| a.gsub_file file, /^\s*# sanji.*\n/, '' }
|
9
|
+
|
10
|
+
self.remove_gemfile_comments
|
11
|
+
end
|
12
|
+
|
13
|
+
protected
|
14
|
+
|
15
|
+
def remove_gemfile_comments
|
16
|
+
a.gsub_file 'Gemfile', /^\s*#.*\n/, ''
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
@@ -0,0 +1,80 @@
|
|
1
|
+
class Sanji::Recipes::Controllers < Sanji::Recipe
|
2
|
+
|
3
|
+
def after_bundle
|
4
|
+
self.setup_public
|
5
|
+
|
6
|
+
self.setup_admin if self.has_admin?
|
7
|
+
self.setup_private if self.has_private?
|
8
|
+
end
|
9
|
+
|
10
|
+
protected
|
11
|
+
|
12
|
+
def has_admin?
|
13
|
+
a.yes? 'Create admin namespace?'
|
14
|
+
end
|
15
|
+
|
16
|
+
def has_private?
|
17
|
+
a.yes? 'Create private module for logged-in non-admin users?'
|
18
|
+
end
|
19
|
+
|
20
|
+
def has_homepage?
|
21
|
+
a.yes? 'Create controller for public home page?'
|
22
|
+
end
|
23
|
+
|
24
|
+
def setup_admin
|
25
|
+
a.generate 'controller', 'admin/base'
|
26
|
+
|
27
|
+
a.inside 'app/views/admin' do
|
28
|
+
a.run 'rm -R base'
|
29
|
+
end
|
30
|
+
|
31
|
+
route =
|
32
|
+
a.text do |t|
|
33
|
+
t.indent.puts 'namespace :admin do'
|
34
|
+
t.indent.puts 'end'
|
35
|
+
end
|
36
|
+
|
37
|
+
a.route route
|
38
|
+
end
|
39
|
+
|
40
|
+
def setup_private
|
41
|
+
a.generate 'controller', 'private/base'
|
42
|
+
|
43
|
+
a.inside 'app/views/private' do
|
44
|
+
a.run 'rm -R base'
|
45
|
+
end
|
46
|
+
|
47
|
+
route =
|
48
|
+
a.text do |t|
|
49
|
+
t.indent.puts 'scope :module => :private do'
|
50
|
+
t.indent.puts 'end'
|
51
|
+
end
|
52
|
+
|
53
|
+
a.route route
|
54
|
+
end
|
55
|
+
|
56
|
+
def setup_public
|
57
|
+
a.generate 'controller', 'public/base'
|
58
|
+
|
59
|
+
a.inside 'app/views/public' do
|
60
|
+
a.run 'rm -R base'
|
61
|
+
end
|
62
|
+
|
63
|
+
if self.has_homepage?
|
64
|
+
a.copy_file 'public_home_controller.rb',
|
65
|
+
'app/controller/public/home_controller.rb'
|
66
|
+
|
67
|
+
a.template 'public_home_index.haml.erb', 'app/views/public/home/index.haml'
|
68
|
+
|
69
|
+
a.route "root :to => 'public/home#index'"
|
70
|
+
|
71
|
+
# Change public namespace to module only.
|
72
|
+
a.gsub_file 'config/routes.rb',
|
73
|
+
/namespace :public/,
|
74
|
+
'scope :module => :public'
|
75
|
+
else
|
76
|
+
a.route "scope :module => :public do\n end"
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
class Sanji::Recipes::Devise < Sanji::Recipe
|
2
|
+
|
3
|
+
def after_create
|
4
|
+
a.add_gem 'devise', '~> 3.0.0'
|
5
|
+
end
|
6
|
+
|
7
|
+
def after_bundle
|
8
|
+
a.generate 'devise:install'
|
9
|
+
a.generate 'devise:views'
|
10
|
+
a.generate 'devise User'
|
11
|
+
|
12
|
+
a.rake 'db:migrate'
|
13
|
+
end
|
14
|
+
|
15
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
class Sanji::Recipes::Draper < Sanji::Recipe
|
2
|
+
|
3
|
+
def after_create
|
4
|
+
a.add_gem 'draper'
|
5
|
+
a.generator :decorator, false
|
6
|
+
end
|
7
|
+
|
8
|
+
def after_bundle
|
9
|
+
a.create_file 'app/decorators/application_decorator.rb' do
|
10
|
+
"class ApplicationDecorator < Draper::Decorator\nend"
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
class Sanji::Recipes::Figaro < Sanji::Recipe
|
2
|
+
|
3
|
+
def after_create
|
4
|
+
a.add_gem 'figaro'
|
5
|
+
|
6
|
+
self.create_application_yml_sample
|
7
|
+
end
|
8
|
+
|
9
|
+
def after_bundle
|
10
|
+
a.bundle_exec 'figaro install'
|
11
|
+
end
|
12
|
+
|
13
|
+
protected
|
14
|
+
|
15
|
+
def create_application_yml_sample
|
16
|
+
a.create_file 'config/application.sample.yml' do
|
17
|
+
"# This will be the template for application.yml\n" \
|
18
|
+
"# Put all valid keys here and their sample values."
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
class Sanji::Recipes::Frontend < Sanji::Recipe
|
2
|
+
|
3
|
+
def after_create
|
4
|
+
self.application_css_to_scss
|
5
|
+
|
6
|
+
if self.use_bootstrap?
|
7
|
+
self.setup_bootstrap
|
8
|
+
else
|
9
|
+
self.setup_normalize
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
protected
|
14
|
+
|
15
|
+
def application_css_to_scss
|
16
|
+
a.inside 'app/assets/stylesheets' do
|
17
|
+
a.run 'mv application.css application.scss'
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
def use_bootstrap?
|
22
|
+
a.yes? 'Use twitter bootstrap css and javascripts?'
|
23
|
+
end
|
24
|
+
|
25
|
+
def setup_bootstrap
|
26
|
+
a.add_gem 'bootstrap-sass'
|
27
|
+
|
28
|
+
a.insert_into_file 'app/assets/stylesheets/application.scss',
|
29
|
+
:after => "*/\n" do
|
30
|
+
"@import 'bootstrap-sprockets';\n" \
|
31
|
+
"@import 'bootstrap';\n"
|
32
|
+
end
|
33
|
+
|
34
|
+
a.insert_into_file 'app/assets/javascripts/application.js',
|
35
|
+
"//= require bootstrap-sprockets\n",
|
36
|
+
:after => "//= require jquery\n"
|
37
|
+
end
|
38
|
+
|
39
|
+
def setup_normalize
|
40
|
+
a.add_gem 'normalize-rails'
|
41
|
+
|
42
|
+
a.insert_into_file 'app/assets/stylesheets/application.scss',
|
43
|
+
"@import 'normalize-rails';\n",
|
44
|
+
:after => "*/\n"
|
45
|
+
end
|
46
|
+
|
47
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
class Sanji::Recipes::Postgresql < Sanji::Recipe
|
2
|
+
|
3
|
+
def after_create
|
4
|
+
a.remove_gem 'sqlite3'
|
5
|
+
a.add_gem 'pg'
|
6
|
+
|
7
|
+
self.create_database_yml
|
8
|
+
end
|
9
|
+
|
10
|
+
|
11
|
+
protected
|
12
|
+
|
13
|
+
def create_database_yml
|
14
|
+
username = a.ask 'Development database username?'
|
15
|
+
password = a.ask 'Development database password?'
|
16
|
+
|
17
|
+
a.delete_file 'config/database.yml'
|
18
|
+
a.template 'database.yml.erb', 'config/database.yml',
|
19
|
+
:username => username,
|
20
|
+
:password => password
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
class Sanji::Recipes::Setup < Sanji::Recipe
|
2
|
+
|
3
|
+
def after_create
|
4
|
+
self.add_generators_block
|
5
|
+
self.add_gemfile_marker
|
6
|
+
end
|
7
|
+
|
8
|
+
|
9
|
+
protected
|
10
|
+
|
11
|
+
def add_generators_block
|
12
|
+
a.application_config do |t|
|
13
|
+
t.indent(2).puts 'config.generators do |g|'
|
14
|
+
t.indent(3).puts '# sanji-generators'
|
15
|
+
t.indent(2).puts 'end'
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
def add_gemfile_marker
|
20
|
+
a.append_to_file 'Gemfile' do
|
21
|
+
"# sanji-gems\n"
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
class Sanji::Utilities::Text
|
2
|
+
|
3
|
+
attr_reader :value
|
4
|
+
|
5
|
+
|
6
|
+
def self.create &block
|
7
|
+
instance = self.new
|
8
|
+
block.call instance
|
9
|
+
|
10
|
+
instance.value
|
11
|
+
end
|
12
|
+
|
13
|
+
|
14
|
+
def initialize
|
15
|
+
@value = ''
|
16
|
+
end
|
17
|
+
|
18
|
+
def puts text = ''
|
19
|
+
self.value << "#{text}\n"
|
20
|
+
self
|
21
|
+
end
|
22
|
+
|
23
|
+
def print text = ''
|
24
|
+
self.value << "#{text}"
|
25
|
+
self
|
26
|
+
end
|
27
|
+
|
28
|
+
def indent quantity = 1
|
29
|
+
self.value << (' ' * quantity)
|
30
|
+
self
|
31
|
+
end
|
32
|
+
|
33
|
+
def empty_line
|
34
|
+
self.puts
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
data/lib/sanji.rb
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
module Sanji
|
2
|
+
module Recipes
|
3
|
+
end
|
4
|
+
|
5
|
+
module Utilities
|
6
|
+
end
|
7
|
+
end
|
8
|
+
|
9
|
+
# Require all utilities
|
10
|
+
Dir["#{File.dirname(__FILE__)}/sanji/utilities/*.rb"].each do |filename|
|
11
|
+
require filename.sub('.rb', '')
|
12
|
+
end
|
13
|
+
|
14
|
+
|
15
|
+
require 'sanji/assistant'
|
16
|
+
require 'sanji/recipe'
|
17
|
+
|
18
|
+
# Require all recipes
|
19
|
+
Dir["#{File.dirname(__FILE__)}/sanji/recipes/*.rb"].each do |filename|
|
20
|
+
require filename.sub('.rb', '')
|
21
|
+
end
|
22
|
+
|
23
|
+
require 'sanji/app_generator'
|
24
|
+
require 'sanji/app_builder'
|
25
|
+
|
metadata
ADDED
@@ -0,0 +1,66 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: sanji
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.0.pre
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Karl Paragua
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2015-12-09 00:00:00.000000000 Z
|
12
|
+
dependencies: []
|
13
|
+
description: rails application generator
|
14
|
+
email: kb.paragua@gmail.com
|
15
|
+
executables:
|
16
|
+
- sanji
|
17
|
+
extensions: []
|
18
|
+
extra_rdoc_files: []
|
19
|
+
files:
|
20
|
+
- README.md
|
21
|
+
- bin/sanji
|
22
|
+
- lib/sanji.rb
|
23
|
+
- lib/sanji/app_builder.rb
|
24
|
+
- lib/sanji/app_generator.rb
|
25
|
+
- lib/sanji/assistant.rb
|
26
|
+
- lib/sanji/recipe.rb
|
27
|
+
- lib/sanji/recipes/annotate.rb
|
28
|
+
- lib/sanji/recipes/cleanup.rb
|
29
|
+
- lib/sanji/recipes/controllers.rb
|
30
|
+
- lib/sanji/recipes/devise.rb
|
31
|
+
- lib/sanji/recipes/draper.rb
|
32
|
+
- lib/sanji/recipes/figaro.rb
|
33
|
+
- lib/sanji/recipes/frontend.rb
|
34
|
+
- lib/sanji/recipes/haml.rb
|
35
|
+
- lib/sanji/recipes/paloma.rb
|
36
|
+
- lib/sanji/recipes/postgresql.rb
|
37
|
+
- lib/sanji/recipes/reform.rb
|
38
|
+
- lib/sanji/recipes/seedbank.rb
|
39
|
+
- lib/sanji/recipes/setup.rb
|
40
|
+
- lib/sanji/recipes/simple_gems.rb
|
41
|
+
- lib/sanji/utilities/text.rb
|
42
|
+
homepage: https://www.github.com/kbparagua/sanji
|
43
|
+
licenses:
|
44
|
+
- MIT
|
45
|
+
metadata: {}
|
46
|
+
post_install_message:
|
47
|
+
rdoc_options: []
|
48
|
+
require_paths:
|
49
|
+
- lib
|
50
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
56
|
+
requirements:
|
57
|
+
- - ">"
|
58
|
+
- !ruby/object:Gem::Version
|
59
|
+
version: 1.3.1
|
60
|
+
requirements: []
|
61
|
+
rubyforge_project:
|
62
|
+
rubygems_version: 2.4.5.1
|
63
|
+
signing_key:
|
64
|
+
specification_version: 4
|
65
|
+
summary: rails application generator
|
66
|
+
test_files: []
|