raygun 1.0.0 → 1.1.0

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
- SHA1:
3
- metadata.gz: 5a4f38bcb962367072335e95eda6d184b8b5fb60
4
- data.tar.gz: 525cd6d636d97ff068c934371ac695609545974a
2
+ SHA256:
3
+ metadata.gz: c7ca3630bd95d0e0c12a7bf9d9f6b5cc0255ba5dfced51c83017a164f84ff147
4
+ data.tar.gz: 06ba32e033ec46d2ebe15f4e03c781b91ba94ac912075e9c1fff6872b68a5489
5
5
  SHA512:
6
- metadata.gz: 457ac34907223cbaaff392788bb8d049fcef8db50b2887335833cb5626a16293e30e6d0aab15f028e56a08ee70b1e5e466d341e2ca5f60018f16a774fef9e3da
7
- data.tar.gz: 828b254b3a7176b80f5150d6efcc2339f080e46ec689131777267e07b4232baa5720649526b90d4a30365bc20f99f3d3daf17259ca606119867477ab106642f2
6
+ metadata.gz: 24416fbf00a23e6cb6b9afaf3c9ac3184bf1e99127c97a0f3db58d09364625e3f4ca5145e5801a039e4f878fa7b5e5952235866a792bfb462ec3b19c145a98ec
7
+ data.tar.gz: 496bcae1bc8c9bdaa1ed4975c9794c916a2187dfe76d1fb2df7fde190431f05c8a25cad2ed7b226898afc3d8a7249c02ee0ecdf6d2046e0633f806b74ba3e8b4
@@ -0,0 +1,99 @@
1
+ AllCops:
2
+ TargetRubyVersion: 2.4
3
+ DisplayCopNames: true
4
+ DisplayStyleGuide: true
5
+
6
+ #
7
+ # Ruby Cops
8
+ #
9
+
10
+ Layout/CaseIndentation:
11
+ Enabled: false
12
+
13
+ Layout/FirstArrayElementIndentation:
14
+ EnforcedStyle: consistent
15
+
16
+ Layout/HashAlignment:
17
+ Enabled: false
18
+
19
+ Layout/LineLength:
20
+ Max: 120
21
+
22
+ Layout/MultilineMethodCallIndentation:
23
+ EnforcedStyle: indented
24
+
25
+ Lint/AmbiguousBlockAssociation:
26
+ Enabled: false
27
+
28
+ Lint/ScriptPermission:
29
+ Exclude:
30
+ - "Rakefile"
31
+
32
+ Metrics/AbcSize:
33
+ Max: 35
34
+ Exclude:
35
+ - "spec/**/*"
36
+
37
+ Metrics/BlockLength:
38
+ CountComments: false
39
+ Max: 50
40
+ Exclude:
41
+ - "config/**/*"
42
+ - "spec/**/*"
43
+
44
+ Metrics/ClassLength:
45
+ Max: 250
46
+ Exclude:
47
+ - "spec/**/*"
48
+
49
+ Metrics/MethodLength:
50
+ Max: 25
51
+ Exclude:
52
+ - "db/migrate/*"
53
+ - "spec/**/*"
54
+
55
+ Naming/PredicateName:
56
+ Enabled: false
57
+
58
+ Security/YAMLLoad:
59
+ Enabled: false
60
+
61
+ Style/BarePercentLiterals:
62
+ EnforcedStyle: percent_q
63
+
64
+ Style/BlockDelimiters:
65
+ EnforcedStyle: braces_for_chaining
66
+
67
+ Style/Documentation:
68
+ Enabled: false
69
+
70
+ Style/EmptyMethod:
71
+ EnforcedStyle: expanded
72
+
73
+ Style/FrozenStringLiteralComment:
74
+ EnforcedStyle: never
75
+
76
+ Style/Lambda:
77
+ EnforcedStyle: literal
78
+
79
+ Style/ModuleFunction:
80
+ EnforcedStyle: extend_self
81
+
82
+ Style/MutableConstant:
83
+ Enabled: false
84
+
85
+ Style/PreferredHashMethods:
86
+ Enabled: false
87
+
88
+ Style/SpecialGlobalVars:
89
+ Enabled: false
90
+
91
+ Style/StringLiterals:
92
+ EnforcedStyle: double_quotes
93
+
94
+ Style/StringLiteralsInInterpolation:
95
+ EnforcedStyle: double_quotes
96
+
97
+ Style/StructInheritance:
98
+ Enabled: true
99
+
@@ -1 +1 @@
1
- 2.1.2
1
+ 2.6.5
data/CHANGES.md CHANGED
@@ -1,5 +1,43 @@
1
1
  # Change Log
2
2
 
3
+ **Note:** Don't let the apparent lack of activity here scare you away. Almost all changes are captured in the
4
+ prototype repo (see [raygun-rails](https://github.com/carbonfive/raygun-rails)), and it's kept pretty well up to date.
5
+
6
+ ## 1.1.0 [2020-07-02]
7
+
8
+ Breaking:
9
+
10
+ * Require Ruby 2.4+ (#151)
11
+
12
+ New features:
13
+
14
+ * Copy `.rubocop.yml` template instead of using a fragile link to the c5-conventions repo (#148)
15
+ * Initialize zapped projects with a default branch of "main" (#157)
16
+
17
+ Docs:
18
+
19
+ * Add Bootstrap instructions to the README (it has been removed from the app prototype) (#141)
20
+
21
+ Housekeeping:
22
+
23
+ * Add bundler and rake development dependencies (#143)
24
+ * Upgrade to Ruby 2.6.5 (#142)
25
+
26
+ ## 1.0.4 [2017-11-28]
27
+
28
+ * Tweak instructions: use `heroku local` instead of `foreman s` (#138, thanks @mattbrictson)
29
+
30
+ ## 1.0.3 [2017-10-25]
31
+
32
+ * Add ability to pull template repository by branch name (#137, thanks @bunnymatic!).
33
+ * Updates to the README (mostly tweaks).
34
+ * Use Ruby 2.4.2 for development.
35
+
36
+ ## 1.0.1 [2015-01-30]
37
+
38
+ * Simplify instructions: use ./bin/setup instead of explicit commands.
39
+ * Use ruby 2.2.0 for development.
40
+
3
41
  ## 1.0.0 [2014-07-01]
4
42
 
5
43
  * 1.0 Release, because it's about time.
data/Gemfile CHANGED
@@ -1,4 +1,4 @@
1
- source 'https://rubygems.org'
1
+ source "https://rubygems.org"
2
2
 
3
3
  # Specify your gem's dependencies in raygun.gemspec
4
4
  gemspec
data/README.md CHANGED
@@ -1,12 +1,12 @@
1
- [![Gem Version](https://badge.fury.io/rb/raygun.png)](http://badge.fury.io/rb/raygun)
2
- <img src="https://raw.github.com/carbonfive/raygun/master/marvin.jpg" align="right"/>
1
+ [![Gem Version](https://badge.fury.io/rb/raygun.svg)](http://badge.fury.io/rb/raygun)
2
+ <img src="https://raw.github.com/carbonfive/raygun/main/marvin.jpg" align="right"/>
3
3
 
4
4
  # Raygun
5
5
 
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-rails)
9
+ Raygun generates Rails projects by copying this [sample app](https://github.com/carbonfive/raygun-rails)
10
10
  and massaging it gently into shape.
11
11
 
12
12
  Alternatively, Raygun allows you to specify your own prototype instead of the default sample app. See below
@@ -18,17 +18,15 @@ Major tools/libraries:
18
18
  * PostgreSQL
19
19
  * Slim
20
20
  * Sass
21
- * Bootstrap
22
- * RSpec
23
- * Factory Girl
24
- * Jasmine
21
+ * RSpec and Capybara
22
+ * Factory Bot
25
23
  * SimpleCov
26
- * Guard (rspec, jasmine, livereload)
27
- * And many tweaks, patterns and common recipes (see [raygun-rails](https://github.com/carbonfive/raygun-rails) for all the details).
24
+ * Guard (rspec, livereload)
25
+ * And many tweaks, patterns and common recipes (see [raygun-rails](https://github.com/carbonfive/raygun-rails) for all
26
+ the details).
28
27
 
29
28
  Raygun includes generator templates for controllers, views, and specs so that generated code follows best
30
- practices. For example, view generation produces bootstrap compatible markup and rspec specs use factory
31
- girl when appropriate.
29
+ practices. For example, rspec specs use factory bot when appropriate.
32
30
 
33
31
  Inspired by Xavier Shay work at Square and ThoughtBot's Suspenders. Thanks!
34
32
 
@@ -47,61 +45,97 @@ Raygun...
47
45
 
48
46
  ## Prerequisites
49
47
 
50
- To generate an application, you only need the raygun gem and network connectivity.
48
+ To generate an application, you only need the Raygun gem and network connectivity.
51
49
 
52
50
  To run your new application's specs or fire up its server, you'll need to meet these requirements.
53
51
 
54
- * PostgreSQL 9.x with superuser 'postgres' with no password (```createuser -s postgres```)
55
- * PhantomJS for JavaScript testing (```brew install phantomjs```)
52
+ * PostgreSQL 9.x with superuser 'postgres' with no password (`createuser -s postgres`)
53
+ * PhantomJS for JavaScript testing (`brew install phantomjs`)
56
54
 
57
- The generated app will be configured to use the ruby version that was used to invoke raygun. If you're using
58
- another ruby, just change the ```Gemfile``` and ```.ruby-version``` as necessary.
55
+ The generated app will be configured to use the ruby version that was used to invoke Raygun. If you're using
56
+ another ruby, just change the `Gemfile` and `.ruby-version` as necessary.
59
57
 
60
58
  ## Usage
61
59
 
62
- $ raygun your-project
60
+ ```bash
61
+ $ raygun your-project
62
+ ```
63
63
 
64
- Once your project is baked out, you can easily kick the wheels. Be sure that you have the prerequities
64
+ Once your project is baked out, you can easily kick the wheels. Be sure that you have the prerequisites
65
65
  covered (see above).
66
66
 
67
- $ cd your-project
68
- $ gem install bundler
69
- $ bundle
67
+ ```bash
68
+ $ cd your-project
69
+ $ bin/setup
70
70
 
71
- # Prepare the database: schema and reference / sample data
72
- $ rake db:setup db:sample_data
71
+ # Run the specs, they should all pass
72
+ $ bin/rake
73
73
 
74
- # Run the specs
75
- $ rake
74
+ # Fire up the app and open it in a browser
75
+ $ heroku local
76
+ $ open http://localhost:3000
77
+ ```
78
+
79
+ ## Next Steps
80
+
81
+ As you'll notice, the project comes with enough CSS (SCSS, actually) to establish some patterns. If you
82
+ need more of a framework, here are instructions on how to add Bootstrap to your new project.
83
+
84
+ ```bash
85
+ $ yarn add bootstrap
86
+ $ rails generate simple_form:install --bootstrap
87
+
88
+ # Answer Yes to the question about overwriting your existing `config/initializers/simple_form.rb`
89
+ ```
90
+
91
+ This generates an initializer and scaffold files for Rails view scaffolding.
92
+
93
+ Add Bootstrap imports to the top your `application.scss`
94
+
95
+ ```css
96
+ // application.scss
97
+ @import "~bootstrap/scss/_functions";
98
+ @import "~bootstrap/scss/_variables";
99
+
100
+ ...
101
+ ```
102
+
103
+ Now you've got Bootstrap in the application.
104
+
105
+ We include `simple_form` in the project by default. For more information about using Bootstrap styling
106
+ on `simple_form` forms, check out the documentation here http://simple-form-bootstrap.plataformatec.com.br/documentation
76
107
 
77
- # Fire up the app and open it in a browser
78
- $ foreman start
79
- $ open http://localhost:3000
80
108
 
81
109
  ## Using a Custom Project Template
82
110
 
83
111
  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.
112
+ starting point. You can use another repo as the project template with the `-p` command line option.
85
113
 
86
- If you invoke raygun with the ```-p``` option, you can specify your own github repository.
114
+ If you invoke raygun with the `-p` option, you can specify your own github repository.
87
115
 
88
116
  $ raygun -p githubid/repo your-project
89
117
 
118
+ Or
119
+
120
+ $ raygun -p githubid/repo your-project#new-branch-name
121
+
90
122
  The repository must:
91
123
 
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.
124
+ Not have any binary files. Raygun runs a 'sed' command on all files, which will fail on binaries, such as jar files.
125
+
126
+ If you are not planning to pull the prototype repository by branch, it must also have a tag. Raygun will choose the
127
+ "greatest" tag and downloads the repository as of that tag.
94
128
 
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.
129
+ If your project template requires a minimum version of Raygun, include the version in a file called
130
+ `.raygun-version` at the root. Raygun will make sure it's new enough for your repo.
97
131
 
98
132
  ## Internal Mechanics
99
133
 
100
134
  Raygun fetches the greatest tag from the [carbonfive/raygun-rails](https://github.com/carbonfive/raygun-rails)
101
- repo, unless it already has it cached in ~/.raygun, extracts the contents of the tarball, and runs a series of
135
+ repo, unless it already has it cached in `~/.raygun`, extracts the contents of the tarball, and runs a series of
102
136
  search-and-replaces on the code to customize it accordingly.
103
137
 
104
- This approach is fast, simple, and makes raygun developement very easy. Make changes to the application
138
+ This approach is fast, simple, and makes developmentn on Raygun very easy: make changes to the application
105
139
  prototype (which is a valid rails app) and tag them when they should be used for new applications.
106
140
 
107
141
  ## Contributing
@@ -114,10 +148,18 @@ prototype (which is a valid rails app) and tag them when they should be used for
114
148
 
115
149
  ### Development
116
150
 
117
- Generate an example app using your local development version of raygun:
151
+ To set up your local environment, run:
152
+
153
+ $ bin/setup
154
+
155
+ To run tests and rubocop checks:
156
+
157
+ $ bundle exec rake
158
+
159
+ To generate an example app using your local development version of Raygun:
118
160
 
119
- $ ./bin/raygun tmp/example_app
161
+ $ bin/raygun tmp/example_app
120
162
 
121
163
  ## Changes
122
164
 
123
- [View the Change Log](https://github.com/carbonfive/raygun/tree/master/CHANGES.md)
165
+ [View the Change Log](https://github.com/carbonfive/raygun/tree/main/CHANGES.md)
data/Rakefile CHANGED
@@ -1 +1,9 @@
1
- require 'bundler/gem_tasks'
1
+ require "bundler/gem_tasks"
2
+ require "rspec/core/rake_task"
3
+ require "rubocop/rake_task"
4
+
5
+ RuboCop::RakeTask.new
6
+
7
+ RSpec::Core::RakeTask.new(:spec)
8
+
9
+ task default: %i[rubocop spec]
data/bin/raygun CHANGED
@@ -1,10 +1,10 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- File.expand_path('../../lib', __FILE__).tap do |lib|
3
+ File.expand_path("../lib", __dir__).tap do |lib|
4
4
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
5
5
  end
6
6
 
7
- require 'raygun/raygun'
7
+ require "raygun/raygun"
8
8
 
9
9
  raygun = Raygun::Runner.parse(ARGV)
10
10
 
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+ set -vx
5
+
6
+ bundle install
@@ -5,41 +5,40 @@
5
5
  # want to add a gem dependency.
6
6
 
7
7
  class String
8
-
9
8
  #
10
9
  # Colors Hash
11
10
  #
12
11
  COLORS = {
13
- :black => 0,
14
- :red => 1,
15
- :green => 2,
16
- :yellow => 3,
17
- :blue => 4,
18
- :magenta => 5,
19
- :cyan => 6,
20
- :white => 7,
21
- :default => 9,
22
-
23
- :light_black => 10,
24
- :light_red => 11,
25
- :light_green => 12,
26
- :light_yellow => 13,
27
- :light_blue => 14,
28
- :light_magenta => 15,
29
- :light_cyan => 16,
30
- :light_white => 17
12
+ black: 0,
13
+ red: 1,
14
+ green: 2,
15
+ yellow: 3,
16
+ blue: 4,
17
+ magenta: 5,
18
+ cyan: 6,
19
+ white: 7,
20
+ default: 9,
21
+
22
+ light_black: 10,
23
+ light_red: 11,
24
+ light_green: 12,
25
+ light_yellow: 13,
26
+ light_blue: 14,
27
+ light_magenta: 15,
28
+ light_cyan: 16,
29
+ light_white: 17
31
30
  }
32
31
 
33
32
  #
34
33
  # Modes Hash
35
34
  #
36
35
  MODES = {
37
- :default => 0, # Turn off all attributes
36
+ default: 0, # Turn off all attributes
38
37
  #:bright => 1, # Set bright mode
39
- :underline => 4, # Set underline mode
40
- :blink => 5, # Set blink mode
41
- :swap => 7, # Exchange foreground and background colors
42
- :hide => 8 # Hide text (foreground color would be the same as background)
38
+ underline: 4, # Set underline mode
39
+ blink: 5, # Set blink mode
40
+ swap: 7, # Exchange foreground and background colors
41
+ hide: 8 # Hide text (foreground color would be the same as background)
43
42
  }
44
43
 
45
44
  protected
@@ -47,16 +46,14 @@ class String
47
46
  #
48
47
  # Set color values in new string intance
49
48
  #
50
- def set_color_parameters( params )
51
- if (params.instance_of?(Hash))
52
- @color = params[:color]
53
- @background = params[:background]
54
- @mode = params[:mode]
55
- @uncolorized = params[:uncolorized]
56
- self
57
- else
58
- nil
59
- end
49
+ def color_parameters(params)
50
+ return unless params.instance_of?(Hash)
51
+
52
+ @color = params[:color]
53
+ @background = params[:background]
54
+ @mode = params[:mode]
55
+ @uncolorized = params[:uncolorized]
56
+ self
60
57
  end
61
58
 
62
59
  public
@@ -77,22 +74,23 @@ class String
77
74
  # puts "This is blue text on red".blue.on_red.blink
78
75
  # puts "This is uncolorized".blue.on_red.uncolorize
79
76
  #
80
- def colorize( params )
77
+ # rubocop:disable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
78
+ def colorize(params)
81
79
  return self unless STDOUT.isatty
82
80
 
83
81
  begin
84
- require 'Win32/Console/ANSI' if RUBY_PLATFORM =~ /win32/
82
+ require "Win32/Console/ANSI" if RUBY_PLATFORM.match?(/win32/)
85
83
  rescue LoadError
86
- raise 'You must gem install win32console to use colorize on Windows'
84
+ raise "You must gem install win32console to use colorize on Windows"
87
85
  end
88
86
 
89
87
  color_parameters = {}
90
88
 
91
- if (params.instance_of?(Hash))
89
+ if params.instance_of?(Hash)
92
90
  color_parameters[:color] = COLORS[params[:color]]
93
91
  color_parameters[:background] = COLORS[params[:background]]
94
92
  color_parameters[:mode] = MODES[params[:mode]]
95
- elsif (params.instance_of?(Symbol))
93
+ elsif params.instance_of?(Symbol)
96
94
  color_parameters[:color] = COLORS[params]
97
95
  end
98
96
 
@@ -100,15 +98,18 @@ class String
100
98
  color_parameters[:background] ||= @background ||= COLORS[:default]
101
99
  color_parameters[:mode] ||= @mode ||= MODES[:default]
102
100
 
103
- color_parameters[:uncolorized] ||= @uncolorized ||= self.dup
101
+ color_parameters[:uncolorized] ||= @uncolorized ||= dup
104
102
 
105
103
  # calculate bright mode
106
104
  color_parameters[:color] += 50 if color_parameters[:color] > 10
107
105
 
108
106
  color_parameters[:background] += 50 if color_parameters[:background] > 10
109
107
 
110
- "\033[#{color_parameters[:mode]};#{color_parameters[:color]+30};#{color_parameters[:background]+40}m#{color_parameters[:uncolorized]}\033[0m".set_color_parameters( color_parameters )
108
+ "\033[#{color_parameters[:mode]};#{color_parameters[:color] + 30};"\
109
+ "#{color_parameters[:background] + 40}m#{color_parameters[:uncolorized]}\033[0m"\
110
+ .color_parameters(color_parameters)
111
111
  end
112
+ # rubocop:enable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
112
113
 
113
114
  #
114
115
  # Return uncolorized string
@@ -127,37 +128,36 @@ class String
127
128
  #
128
129
  # Make some color and on_color methods
129
130
  #
130
- COLORS.each_key do | key |
131
+ COLORS.each_key do |key|
131
132
  next if key == :default
132
133
 
133
134
  define_method key do
134
- self.colorize( :color => key )
135
+ colorize(color: key)
135
136
  end
136
137
 
137
138
  define_method "on_#{key}" do
138
- self.colorize( :background => key )
139
+ colorize(background: key)
139
140
  end
140
141
  end
141
142
 
142
143
  #
143
144
  # Methods for modes
144
145
  #
145
- MODES.each_key do | key |
146
+ MODES.each_key do |key|
146
147
  next if key == :default
147
148
 
148
149
  define_method key do
149
- self.colorize( :mode => key )
150
+ colorize(mode: key)
150
151
  end
151
152
  end
152
153
 
153
154
  class << self
154
-
155
155
  #
156
156
  # Return array of available modes used by colorize method
157
157
  #
158
158
  def modes
159
159
  keys = []
160
- MODES.each_key do | key |
160
+ MODES.each_key do |key|
161
161
  keys << key
162
162
  end
163
163
  keys
@@ -168,7 +168,7 @@ class String
168
168
  #
169
169
  def colors
170
170
  keys = []
171
- COLORS.each_key do | key |
171
+ COLORS.each_key do |key|
172
172
  keys << key
173
173
  end
174
174
  keys
@@ -177,16 +177,16 @@ class String
177
177
  #
178
178
  # Display color matrix with color names.
179
179
  #
180
- def color_matrix( txt = "[X]" )
180
+ def color_matrix(txt = "[X]")
181
181
  size = String.colors.length
182
- String.colors.each do | color |
183
- String.colors.each do | back |
184
- print txt.colorize( :color => color, :background => back )
182
+ String.colors.each do |color|
183
+ String.colors.each do |back|
184
+ print txt.colorize(color: color, background: back)
185
185
  end
186
186
  puts " < #{color}"
187
187
  end
188
- String.colors.reverse.each_with_index do | back, index |
189
- puts "#{"|".rjust(txt.length)*(size-index)} < #{back}"
188
+ String.colors.reverse.each_with_index do |back, index|
189
+ puts "#{"|".rjust(txt.length) * (size - index)} < #{back}"
190
190
  end
191
191
  ""
192
192
  end