make_it_so 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 60efe30551094e0651e6082750ad4eb07410da22
4
- data.tar.gz: b0bd5c7fe61f9fa3b68c514164bafa07fa0e8147
3
+ metadata.gz: 7edf6e86640b40baa5dbae141ad1cd9e2c6ff132
4
+ data.tar.gz: 5084c958f8b8997ff9c88843f62beaebc4a66c48
5
5
  SHA512:
6
- metadata.gz: e7bc7dcdb6fa6b3385c0ca193579651c08d380eb79dd1f028091f53b2a7986074000f2883fc34da64089d3993ae53b7494f5aa82790dce6b17de08cf0fa44cc8
7
- data.tar.gz: 56e0931efe340b9bb8689c76d4d388cdf68b056ae112706cb33c77ed6e601fd3debd78bb46dfdc95c9b0c270111aa4565471e25c58afbecee9c4465b782291a4
6
+ metadata.gz: c0900609b3fc0df653c762e61e94c48e013ac115bf46e4d9fee294f40973fd4c013b248ad19e1707950e3bfe9a87efa064f2659571c74bad6d2929e729aa78cd
7
+ data.tar.gz: 576d395e41da2034743d7b92702eaded0df70648b9ad55d4f855ae6f348ae86926287e863ead515ad9587ffb5ea8bdc663d4abdcedfcc67fbb86dd0e79999d8b
data/README.md CHANGED
@@ -16,16 +16,44 @@ Install it yourself as:
16
16
 
17
17
  ## Usage
18
18
 
19
- ```ruby
19
+
20
+ ### Rails
21
+
22
+ In the terminal, run:
23
+
24
+ ```no-highlight
20
25
  make_it_so rails <app_name>
21
26
  ```
22
27
 
23
28
  Then run:
29
+
24
30
  ```ruby
25
31
  rake db:create
26
32
  rake db:migrate
27
33
  ```
28
34
 
35
+ ## Extra Footer in Views
36
+
37
+ Inject javascript at the end of the body tag. Javascript should always be the last thing loaded on the page. In view logic you can do the following:
38
+
39
+ ```erb
40
+ <%= content_for :extra_footer do %>
41
+ <script type="text/javascript">
42
+ var widget = new Something.Widget('foo');
43
+ </script>
44
+ <% end %>
45
+ ```
46
+
47
+ ### Sinatra
48
+
49
+ In the terminal, run:
50
+
51
+ ```no-highlight
52
+ make_it_so sinatra <app_name>
53
+ ```
54
+
55
+ By default, the generator, will create a sinatra root complete with an RSpec configuration.
56
+
29
57
  ## Contributing
30
58
 
31
59
  1. Fork it ( https://github.com/[my-github-username]/make_it_so/fork )
data/app.rb ADDED
@@ -0,0 +1,20 @@
1
+ require 'sinatra'
2
+ require 'sinatra/reloader'
3
+
4
+ configure :development, :test do
5
+ require 'pry'
6
+ end
7
+
8
+ configure do
9
+ set :views, 'app/views'
10
+ end
11
+
12
+ Dir[File.join(File.dirname(__FILE__), 'lib', '**', '*.rb')].each do |file|
13
+ require file
14
+ also_reload file
15
+ end
16
+
17
+ get '/' do
18
+ @title = "Hello World"
19
+ erb :index
20
+ end
@@ -0,0 +1,96 @@
1
+ module MakeItSo
2
+ class SinatraAppGenerator < Thor::Group
3
+ include Thor::Actions
4
+
5
+ desc "Creates a new Sinatra application"
6
+ argument :name,
7
+ type: :string,
8
+ desc: "The name of the new application"
9
+
10
+ class_option :rspec,
11
+ type: :boolean,
12
+ default: true,
13
+ desc: 'install rspec'
14
+
15
+ def directories
16
+ [
17
+ 'lib',
18
+ 'views',
19
+ 'public/stylesheets',
20
+ 'public/javascripts'
21
+ ].each do |dir|
22
+ empty_directory File.join(app_path, dir)
23
+ end
24
+ end
25
+
26
+ def app_file
27
+ file_path = 'app.rb'
28
+ template(file_path, File.join(app_path, file_path))
29
+ end
30
+
31
+ def rakefile
32
+ file_path = 'Rakefile'
33
+ template(file_path, File.join(app_path, file_path))
34
+ end
35
+
36
+ def view_files
37
+ [
38
+ 'views/layout.erb',
39
+ 'views/index.erb'
40
+ ].each do |file_path|
41
+ template(file_path, File.join(app_path, file_path))
42
+ end
43
+ end
44
+
45
+ def asset_files
46
+ [
47
+ 'public/javascripts/app.js',
48
+ 'public/stylesheets/app.css'
49
+ ].each do |file_path|
50
+ create_file(File.join(app_path, file_path))
51
+ end
52
+ end
53
+
54
+ def rackup_file
55
+ file_path = 'config.ru'
56
+ template(file_path, File.join(app_path, file_path))
57
+ end
58
+
59
+ def gemfile
60
+ file_path = 'Gemfile'
61
+ template(file_path, File.join(app_path, file_path))
62
+ end
63
+
64
+ def gitignore
65
+ file_path = '.gitignore'
66
+ template(file_path, File.join(app_path, file_path))
67
+ end
68
+
69
+ def rspec
70
+ if options.rspec?
71
+ empty_directory File.join(app_path, 'spec/features')
72
+ spec_helper = 'spec/spec_helper.rb'
73
+ template(spec_helper, File.join(app_path, spec_helper))
74
+
75
+ dot_rspec = '.rspec'
76
+ template(dot_rspec, File.join(app_path, dot_rspec))
77
+ end
78
+ end
79
+
80
+ def self.source_root
81
+ template_path = File.join(
82
+ File.dirname(__FILE__),
83
+ "..",
84
+ "..",
85
+ "templates",
86
+ "sinatra")
87
+
88
+ File.expand_path(template_path)
89
+ end
90
+
91
+ protected
92
+ def app_path
93
+ name
94
+ end
95
+ end
96
+ end
@@ -1,11 +1,19 @@
1
1
  require 'thor'
2
2
  module MakeItSo
3
3
  class CommandLineInterface < Thor
4
- desc "rails <app_name>", "generates a rails application based on your specifications"
4
+ desc "rails <app_name>",
5
+ "generates a rails application based on your specifications"
5
6
  option :devise
6
7
  def rails(app_name)
7
8
  puts "#{app_name}"
8
9
  MakeItSo::RailsAppGenerator.start([app_name])
9
10
  end
11
+
12
+ desc "sinatra <app_name>",
13
+ "generates a sinatra application based on your specifications"
14
+ def sinatra(*args)
15
+ puts "#{args.first}"
16
+ MakeItSo::SinatraAppGenerator.start(args)
17
+ end
10
18
  end
11
19
  end
@@ -1,3 +1,3 @@
1
1
  module MakeItSo
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.4"
3
3
  end
data/lib/make_it_so.rb CHANGED
@@ -11,3 +11,4 @@ require "make_it_so/rails"
11
11
 
12
12
  require "make_it_so/command_line_interface"
13
13
  require "generators/rails_app_generator"
14
+ require "generators/sinatra_app_generator"
@@ -0,0 +1,116 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'user generates sinatra app' do
4
+ def app_name
5
+ 'dummy_sinatra'
6
+ end
7
+
8
+ def app_path
9
+ join_paths(tmp_path, app_name)
10
+ end
11
+
12
+ before(:all) do
13
+ make_it_so!("sinatra #{app_path}")
14
+ end
15
+
16
+ scenario 'includes sinatra in the app.rb file' do
17
+ expect(FileTest.exists?(join_paths(app_path, 'app.rb'))).
18
+ to be(true)
19
+ end
20
+
21
+ scenario 'creates a lib directory' do
22
+ expect(has_dir?('lib')).to be(true)
23
+ end
24
+
25
+ scenario 'creates a public/javascripts directory' do
26
+ expect(has_dir?('public/javascripts')).to be(true)
27
+ end
28
+
29
+ scenario 'creates a public/stylesheets directory' do
30
+ expect(has_dir?('public/stylesheets')).to be(true)
31
+ end
32
+
33
+ scenario 'creates a views directory' do
34
+ expect(has_dir?('views')).to be(true)
35
+ end
36
+
37
+ scenario 'includes a config.ru file' do
38
+ expect(has_file?('config.ru')).to be(true)
39
+ end
40
+
41
+ scenario 'includes a Gemfile' do
42
+ expect(has_file?('Gemfile')).to be(true)
43
+ end
44
+
45
+ scenario 'includes sinatra in the Gemfile' do
46
+ expect(in_gemfile?('sinatra')).
47
+ to be(true)
48
+ end
49
+
50
+ scenario 'creates a public/javascripts/app.js' do
51
+ expect(has_file?('public/javascripts/app.js')).to be(true)
52
+ end
53
+
54
+ scenario 'creates a public/stylesheets/app.css' do
55
+ expect(has_file?('public/stylesheets/app.css')).to be(true)
56
+ end
57
+
58
+ scenario 'creates a layout file' do
59
+ expect(has_file?('views/layout.erb')).to be(true)
60
+ end
61
+
62
+ scenario 'creates an index file' do
63
+ expect(has_file?('views/index.erb')).to be(true)
64
+ end
65
+
66
+ scenario 'creates a Rakefile' do
67
+ expect(has_file?('Rakefile')).to be(true)
68
+ end
69
+
70
+ scenario '.gitignore' do
71
+ expect(has_file?('.gitignore')).to be(true)
72
+ end
73
+
74
+ context 'rspec' do
75
+ scenario 'creates a spec_helper' do
76
+ expect(has_file?('spec/spec_helper.rb')).to be(true)
77
+ end
78
+
79
+ scenario 'creates a .rspec file' do
80
+ expect(has_file?('.rspec')).to be(true)
81
+ end
82
+
83
+ scenario 'creates a spec directory' do
84
+ expect(has_dir?('spec')).to be(true)
85
+ end
86
+
87
+ scenario 'creates a spec/features directory' do
88
+ expect(has_dir?('spec/features')).to be(true)
89
+ end
90
+
91
+ scenario 'includes rspec as a dependency' do
92
+ expect(in_gemfile?('rspec')).to be(true)
93
+ end
94
+
95
+ scenario 'includes capybara as a dependency' do
96
+ expect(in_gemfile?('capybara')).to be(true)
97
+ end
98
+
99
+ scenario 'includes launchy as a dependency' do
100
+ expect(in_gemfile?('launchy')).to be(true)
101
+ end
102
+ end
103
+
104
+ def has_dir?(relative_path)
105
+ File.directory?(join_paths(app_path, relative_path))
106
+ end
107
+
108
+ def has_file?(relative_path)
109
+ FileTest.exists?(join_paths(app_path, relative_path))
110
+ end
111
+
112
+ def in_gemfile?(gem_name)
113
+ File.read(join_paths(app_path, 'Gemfile')).
114
+ match(/gem.*#{Regexp.escape(gem_name)}/).present?
115
+ end
116
+ end
@@ -47,11 +47,6 @@
47
47
  <%%= yield %>
48
48
 
49
49
  <%%= javascript_include_tag 'application' %>
50
- <%%= javascript_tag do %>
51
- $(function(){
52
- $(document).foundation();
53
- });
54
- <%% end %>
55
50
  <%%= yield :extra_footer %>
56
51
  </body>
57
52
  </html>
@@ -0,0 +1,3 @@
1
+ .bundle
2
+ .DS_store
3
+
@@ -0,0 +1 @@
1
+ --color
@@ -0,0 +1,15 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gem 'sinatra'
4
+ gem 'sinatra-contrib'
5
+ gem 'rake'
6
+
7
+ group :test, :development do
8
+ gem 'pry'
9
+ <%- if options.rspec? -%>
10
+ gem 'capybara'
11
+ gem 'rspec'
12
+ gem 'launchy'
13
+ <%- end -%>
14
+ end
15
+
@@ -0,0 +1,9 @@
1
+ <% if options.rspec? %>
2
+ require 'rspec/core/rake_task'
3
+
4
+ RSpec::Core::RakeTask.new :spec do |task|
5
+ task.pattern = Dir['spec/**/*_spec.rb']
6
+ end
7
+
8
+ task :default => ['spec']
9
+ <% end %>
@@ -0,0 +1,16 @@
1
+ require 'sinatra'
2
+ require 'sinatra/reloader'
3
+
4
+ configure :development, :test do
5
+ require 'pry'
6
+ end
7
+
8
+ Dir[File.join(File.dirname(__FILE__), 'lib', '**', '*.rb')].each do |file|
9
+ require file
10
+ also_reload file
11
+ end
12
+
13
+ get '/' do
14
+ @title = "Hello World"
15
+ erb :index
16
+ end
@@ -0,0 +1,2 @@
1
+ require './app'
2
+ run Sinatra::Application
@@ -0,0 +1,9 @@
1
+ require 'pry'
2
+ require 'rspec'
3
+ require 'capybara/rspec'
4
+
5
+ require_relative '../app.rb'
6
+
7
+ set :environment, :test
8
+
9
+ Capybara.app = Sinatra::Application
@@ -0,0 +1 @@
1
+ <h1><%%= @title %></h1>
@@ -0,0 +1,14 @@
1
+ <!doctype html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="utf-8" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
+ <title>Hello World</title>
7
+ <link rel="stylesheet" href="/stylesheets/app.css" />
8
+ </head>
9
+ <body>
10
+ <%%= yield %>
11
+
12
+ <script src="/javascripts/app.js"></script>
13
+ </body>
14
+ </html>
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: make_it_so
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dan Pickett
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-12-29 00:00:00.000000000 Z
11
+ date: 2015-02-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor
@@ -123,6 +123,7 @@ files:
123
123
  - LICENSE.txt
124
124
  - README.md
125
125
  - Rakefile
126
+ - app.rb
126
127
  - bin/make_it_so
127
128
  - gemfiles/rails_4_0.gemfile
128
129
  - gemfiles/rails_4_0.gemfile.lock
@@ -131,6 +132,7 @@ files:
131
132
  - gemfiles/rails_4_2.gemfile
132
133
  - gemfiles/rails_4_2.gemfile.lock
133
134
  - lib/generators/rails_app_generator.rb
135
+ - lib/generators/sinatra_app_generator.rb
134
136
  - lib/make_it_so.rb
135
137
  - lib/make_it_so/command_line_interface.rb
136
138
  - lib/make_it_so/rails.rb
@@ -140,6 +142,7 @@ files:
140
142
  - snippets/rails/application_generator.rb
141
143
  - snippets/rails/user_factory.rb
142
144
  - spec/features/user_generates_rails_spec.rb
145
+ - spec/features/user_generates_sinatra_spec.rb
143
146
  - spec/spec_helper.rb
144
147
  - spec/support/make_it_so_spec_helpers.rb
145
148
  - templates/.gitkeep
@@ -153,6 +156,15 @@ files:
153
156
  - templates/rails/spec/features/user_signs_up_spec.rb
154
157
  - templates/rails/spec/support/factory_girl.rb
155
158
  - templates/rails/spec/support/valid_attribute.rb
159
+ - templates/sinatra/.gitignore
160
+ - templates/sinatra/.rspec
161
+ - templates/sinatra/Gemfile
162
+ - templates/sinatra/Rakefile
163
+ - templates/sinatra/app.rb
164
+ - templates/sinatra/config.ru
165
+ - templates/sinatra/spec/spec_helper.rb
166
+ - templates/sinatra/views/index.erb
167
+ - templates/sinatra/views/layout.erb
156
168
  homepage: ''
157
169
  licenses:
158
170
  - MIT
@@ -179,5 +191,6 @@ specification_version: 4
179
191
  summary: An application generator for all things ruby
180
192
  test_files:
181
193
  - spec/features/user_generates_rails_spec.rb
194
+ - spec/features/user_generates_sinatra_spec.rb
182
195
  - spec/spec_helper.rb
183
196
  - spec/support/make_it_so_spec_helpers.rb