raygun 0.9.1 → 0.9.2

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: 5c4cb603574114533fb00ba764197f69fb4d92d0
4
- data.tar.gz: 8dfe1d7af4aed65fdd0904077339e3fe84c4a90d
3
+ metadata.gz: 0f0a82b056e852ee3d58c535158fe394434c2596
4
+ data.tar.gz: 0b4b7e6de3a75834671d1a55fbd8c01e243b9391
5
5
  SHA512:
6
- metadata.gz: deef9b97d82f47c0bb375b06daf41e0fbb106a11b1f51ebb2a7f0d6e6197715d3dfd25fc7fa4e6cdc289a591cb8cc8ddefa8214ea69a01b036de4dc2234e06d4
7
- data.tar.gz: 8dbf89d186e963e8ee6e00a7550bda2d01e142bdb2bfc06cef17480213c64db9459dce9a11cd42f7b9b743a1c5e73ab603089ae655f57ffe0ca39453b02f67a3
6
+ metadata.gz: e9178655c9d0647faab7c2618152330ef89720518a66a3d01c187f3eab0530bd9cbb18311947a52fe0238f7054fc1b3d3b8dc42b757bcefd471ad8259b83bf61
7
+ data.tar.gz: bccf92b4cc0e3234dfb98785719d1b31dfc1701686ea8bb0b9af79d6067096fab3e94accec5a58bd7e64fa66fe9350be0d54c1af37f98795f28bb44b539d5741
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- 2.0.0-p247
1
+ 2.0.0-p353
data/CHANGES.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # Change Log
2
2
 
3
+ ## 0.9.2 [2013-12-03]
4
+
5
+ * Support custom project templates with the -p command line arg (#122, thanks @drogar!).
6
+ * Remove the stranded and useless .raygun-version from the generated app.
7
+ * Rename the rails prototype repo to raygun-rails (#123).
8
+
3
9
  ## 0.9.1 [2013-11-12]
4
10
 
5
11
  * Fixed a bug that fouled up fetching tags from github (#118).
@@ -7,9 +13,9 @@
7
13
 
8
14
  ## 0.9.0 [2013-11-11]
9
15
 
10
- Note: All future changes to the application prototype (sample app) will be made in the [raygun-rails4](https://github.com/carbonfive/raygun-rails4) repo.
16
+ Note: All future changes to the application prototype (sample app) will be made in the [raygun-rails](https://github.com/carbonfive/raygun-rails) repo.
11
17
 
12
- * Raygun no longer bundles the application prototype, it's fetched from github (https://github.com/carbonfive/raygun-rails4) instead (#112).
18
+ * Raygun no longer bundles the application prototype, it's fetched from github (https://github.com/carbonfive/raygun-rails) instead (#112).
13
19
  * Drop support for Rails 3 (#116).
14
20
  * Better bootstrap 3 support (#115, thanks @felafelwaffle!).
15
21
 
data/README.md CHANGED
@@ -6,9 +6,12 @@
6
6
  Rails application generator that builds a new project skeleton configured with Carbon Five preferences and
7
7
  best practices baked right in. Spend less time configuring and more building cool features.
8
8
 
9
- Raygun generates Rails 4 projects by copying this [sample app](https://github.com/carbonfive/raygun-rails4)
9
+ Raygun generates Rails 4 projects by copying this [sample app](https://github.com/carbonfive/raygun-rails)
10
10
  and massaging it gently into shape.
11
11
 
12
+ Alternatively, Raygun allows you to specify your own prototype instead of the default sample app. See below
13
+ for details.
14
+
12
15
  Major tools/libraries:
13
16
 
14
17
  * Rails 4.0
@@ -21,7 +24,7 @@ Major tools/libraries:
21
24
  * Jasmine
22
25
  * SimpleCov
23
26
  * Guard (rspec, jasmine, livereload)
24
- * And many tweaks, patterns and common recipes (see [raygun-rails4](https://github.com/carbonfive/raygun-rails4) for all the details).
27
+ * And many tweaks, patterns and common recipes (see [raygun-rails](https://github.com/carbonfive/raygun-rails) for all the details).
25
28
 
26
29
  Raygun includes generator templates for controllers, views, and specs so that generated code follows best
27
30
  practices. For example, view generation produces bootstrap compatible markup and rspec specs use factory
@@ -44,7 +47,7 @@ Raygun...
44
47
 
45
48
  ## Prerequisites
46
49
 
47
- To generate an application, you only need the raygun gem.
50
+ To generate an application, you need the raygun gem and wget (```brew install wget```).
48
51
 
49
52
  To run your new application's specs or fire up its server, you'll need to meet these requirements.
50
53
 
@@ -75,9 +78,26 @@ covered (see above).
75
78
  $ foreman start
76
79
  $ open http://localhost:3000
77
80
 
81
+ ## Using a Custom Project Template
82
+
83
+ The default is to use the project at [carbonfive/raygun-rails](https://github.com/carbonfive/raygun-rails) as a
84
+ starting point. You can use another repo as the project template with the ```-p``` command line option.
85
+
86
+ If you invoke raygun with the ```-p``` option, you can specify your own github repository.
87
+
88
+ $ raygun -p githubid/repo your-project
89
+
90
+ The repository must:
91
+
92
+ * Have been tagged. Raygun chooses the "greatest" tag and downloads the repository as of that tag.
93
+ * Not have any binary files. Raygun runs a 'sed' command on all files, which will fail on binaries, such as jar files.
94
+
95
+ If your project template requires a minimum version of raygun, include the version in a file called
96
+ ```.raygun-version``` at the root. Raygun will make sure it's new enough for your repo.
97
+
78
98
  ## Internal Mechanics
79
99
 
80
- Raygun fetches the latest tag from the [carbonfive/raygun-rails4](https://github.com/carbonfive/raygun-rails4)
100
+ Raygun fetches the greatest tag from the [carbonfive/raygun-rails](https://github.com/carbonfive/raygun-rails)
81
101
  repo, unless it already has it cached in ~/.raygun, extracts the contents of the tarball, and runs a series of
82
102
  search-and-replaces on the code to customize it accordingly.
83
103
 
data/lib/raygun/raygun.rb CHANGED
@@ -10,6 +10,7 @@ require_relative 'version'
10
10
 
11
11
  module Raygun
12
12
  class Runner
13
+ CARBONFIVE_REPO = 'carbonfive/raygun-rails'
13
14
  attr_accessor :target_dir, :app_dir, :app_name, :dash_name, :snake_name, :camel_name, :title_name, :prototype_repo
14
15
 
15
16
  def initialize(target_dir, prototype_repo)
@@ -87,6 +88,7 @@ module Raygun
87
88
 
88
89
  shell "tar xfz #{@prototype} -C #{app_dir}"
89
90
 
91
+ # Github includes an extra directory layer in the tag tarball.
90
92
  extraneous_dir = Dir.glob("#{app_dir}/*").first
91
93
  dirs_to_move = Dir.glob("#{extraneous_dir}/*", File::FNM_DOTMATCH)
92
94
  .reject { |d| %w{. ..}.include?(File.basename(d)) }
@@ -109,10 +111,17 @@ module Raygun
109
111
  end
110
112
 
111
113
  def configure_new_app
114
+ clean_up_unwanted_files
115
+
112
116
  update_ruby_version
117
+
113
118
  initialize_git
114
119
  end
115
120
 
121
+ def clean_up_unwanted_files
122
+ FileUtils.rm "#{app_dir}/.raygun-version", force: true
123
+ end
124
+
116
125
  def update_ruby_version
117
126
  prototype_ruby_patch_level = File.read(File.expand_path("#{app_dir}/.ruby-version", __FILE__)).strip
118
127
  prototype_ruby_version = prototype_ruby_patch_level.match(/(\d\.\d\.\d).*/)[1]
@@ -150,6 +159,14 @@ module Raygun
150
159
  end
151
160
 
152
161
  def print_next_steps
162
+ if @prototype_repo == CARBONFIVE_REPO
163
+ print_next_steps_carbon_five
164
+ else
165
+ print_next_steps_for_custom_repo
166
+ end
167
+ end
168
+
169
+ def print_next_steps_carbon_five
153
170
  puts ""
154
171
  puts "Zap! Your application is ready. Next steps...".colorize(:yellow)
155
172
  puts ""
@@ -170,17 +187,59 @@ module Raygun
170
187
  puts ""
171
188
  puts "Enjoy your Carbon Five flavored Rails application!".colorize(:yellow)
172
189
  end
190
+
191
+ def print_next_steps_for_custom_repo
192
+ puts ""
193
+ puts "Zap! Your application is ready.".colorize(:yellow)
194
+ puts ""
195
+ puts "Enjoy your raygun generated application!".colorize(:yellow)
196
+ end
173
197
 
174
198
  protected
175
199
 
176
- # Fetch the tags for the repo (e.g. 'carbonfive/raygun-rails4') and return the latest as JSON.
200
+ # Fetch the tags for the repo (e.g. 'carbonfive/raygun-rails') and return the latest as JSON.
177
201
  def fetch_latest_tag(repo)
178
- url = "https://api.github.com/repos/#{@prototype_repo}/tags"
202
+ url = "https://api.github.com/repos/#{repo}/tags"
179
203
  uri = URI.parse(url)
180
204
  http = Net::HTTP.new(uri.host, uri.port)
181
205
  http.use_ssl = true
182
206
  request = Net::HTTP::Get.new(URI.encode(url))
183
- JSON.parse(http.request(request).body).first
207
+
208
+ response = http.request(request)
209
+
210
+ unless response.code == "200"
211
+ puts ""
212
+ print "Whoops - need to try again!".colorize(:red)
213
+ puts ""
214
+ print "We could not find (".colorize(:light_red)
215
+ print "#{repo}".colorize(:white)
216
+ print ") on github.".colorize(:light_red)
217
+ puts ""
218
+ print "The response from github was a (".colorize(:light_red)
219
+ print "#{response.code}".colorize(:white)
220
+ puts ") which I'm sure you can fix right up!".colorize(:light_red)
221
+ puts ""
222
+ exit 1
223
+ end
224
+
225
+ result = JSON.parse(response.body).first
226
+ unless result
227
+ puts ""
228
+ print "Whoops - need to try again!".colorize(:red)
229
+ puts ""
230
+ print "We could not find any tags in the repo (".colorize(:light_red)
231
+ print "#{repo}".colorize(:white)
232
+ print ") on github.".colorize(:light_red)
233
+ puts ""
234
+ print "Raygun uses the 'largest' tag in a repository, where tags are sorted alphanumerically.".colorize(:light_red)
235
+ puts ""
236
+ print "E.g., tag 'v.0.10.0' > 'v.0.9.9' and 'x' > 'a'.".colorize(:light_red)
237
+ print ""
238
+ puts ""
239
+ exit 1
240
+ end
241
+
242
+ result
184
243
  end
185
244
 
186
245
  def camelize(string)
@@ -212,17 +271,17 @@ module Raygun
212
271
 
213
272
  options = OpenStruct.new
214
273
  options.target_dir = nil
215
- options.prototype_repo = 'carbonfive/raygun-rails4'
274
+ options.prototype_repo = CARBONFIVE_REPO
216
275
 
217
276
  parser = OptionParser.new do |opts|
218
277
  opts.banner = "Usage: raygun [options] NEW_APP_DIRECTORY"
219
278
 
220
- opts.on('-h', '--help', "Show raygun usage") do |variable|
279
+ opts.on('-h', '--help', "Show raygun usage") do
221
280
  usage_and_exit(opts)
222
281
  end
223
- #opts.on('-p', '--prototype', "Prototype github repo (e.g. carbonfive/raygun).") do |prototype|
224
- # options.prototype_repo = prototype_repo
225
- #end
282
+ opts.on('-p', '--prototype [github_repo]', "Prototype github repo (e.g. carbonfive/raygun-rails).") do |prototype|
283
+ options.prototype_repo = prototype
284
+ end
226
285
  end
227
286
 
228
287
  begin
@@ -1,3 +1,3 @@
1
1
  module Raygun
2
- VERSION = "0.9.1"
2
+ VERSION = "0.9.2"
3
3
  end
data/raygun.gemspec CHANGED
@@ -14,7 +14,7 @@ Gem::Specification.new do |gem|
14
14
  gem.description = %q{Carbon Five Rails application generator}
15
15
  gem.summary = %q{Generates and customizes Rails applications with Carbon Five best practices baked in.}
16
16
  gem.homepage = "https://github.com/carbonfive/raygun"
17
- gem..license = 'MIT'
17
+ gem.license = 'MIT'
18
18
 
19
19
  gem.files = `git ls-files`.split($/)
20
20
  gem.executables = gem.files.grep(%r{^bin/}).map { |f| File.basename(f) }
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: raygun
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.1
4
+ version: 0.9.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Christian Nelson
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2013-11-12 00:00:00.000000000 Z
13
+ date: 2013-12-03 00:00:00.000000000 Z
14
14
  dependencies: []
15
15
  description: Carbon Five Rails application generator
16
16
  email:
@@ -35,7 +35,8 @@ files:
35
35
  - marvin.jpg
36
36
  - raygun.gemspec
37
37
  homepage: https://github.com/carbonfive/raygun
38
- licenses: []
38
+ licenses:
39
+ - MIT
39
40
  metadata: {}
40
41
  post_install_message:
41
42
  rdoc_options: []
@@ -53,7 +54,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
53
54
  version: '0'
54
55
  requirements: []
55
56
  rubyforge_project:
56
- rubygems_version: 2.0.3
57
+ rubygems_version: 2.1.11
57
58
  signing_key:
58
59
  specification_version: 4
59
60
  summary: Generates and customizes Rails applications with Carbon Five best practices