meta_presenter 0.2.4 → 1.0.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c82a743718f5aadff23b8c43bfb6890fc95ab2d5eb3d754328b94a2cefab1363
4
- data.tar.gz: 91a96f06fcb1daa1a0992e5a2b6cf793b6747728abf5e2d23abc1906fe1f130d
3
+ metadata.gz: 6472c3bd9362c0382d078e139be49b95313689722ef8ee59eb94dd44bf60964c
4
+ data.tar.gz: 37fa528ed35baa5910a5da3d2984c6be8cf4a301df3a3549d13254a6dd6411b3
5
5
  SHA512:
6
- metadata.gz: b573c02a269b12d30c3655ba86218aa1cd8b02b5ef8b65c27edd61984eb197950e21338817a21134a3e1e2673ab24cd47639692c90912ad3d66c86235a14820d
7
- data.tar.gz: b841eb0383da7bd3bb9eb750a8421218097717c923b6299d1d71742b7d700100a26b191e32606725d795c23ec13474903e4f579d9bb5fefeff792daa2569c178
6
+ metadata.gz: ea6ba9139e5bc5286b9023cbfd59ffff1fcee9744fe7dc0e75e0a09c7540e678fbb15193299ab59f71a41bdc9a172f2ee41f71ca490d5c4978aa0a99ecb7fc90
7
+ data.tar.gz: 87a4ce8737f8d4a01e1d0b0288bd13c11607261c6fa9e106d0ef9f3b403317fb9e55b6d52923fe3e33a37bfe2fee9029e331432a686ade63616721c0f61fef47
data/.rubocop.yml ADDED
@@ -0,0 +1,6 @@
1
+ AllCops:
2
+ TargetRubyVersion: 2.7.5
3
+ NewCops: enable
4
+
5
+ Style/FrozenStringLiteralComment:
6
+ Enabled: false
data/.tool-versions ADDED
@@ -0,0 +1 @@
1
+ ruby 3.2.2
data/.travis.yml CHANGED
@@ -3,26 +3,20 @@ cache: bundler
3
3
  matrix:
4
4
  fast_finish: true
5
5
  rvm:
6
- - 2.1.0
7
- - 2.2.0
8
- - 2.3.0
9
- - 2.4.0
10
- - 2.5.0
11
- - 2.6.0
6
+ - 2.7.5
7
+ - 3.0.0
8
+ - 3.1.0
9
+ - 3.2.0
12
10
  gemfile:
13
11
  - gemfiles/rails3.gemfile
14
12
  - gemfiles/rails4.gemfile
15
13
  - gemfiles/rails5.gemfile
14
+ - gemfiles/rails6.gemfile
15
+ - gemfiles/rails7.gemfile
16
16
  matrix:
17
17
  exclude:
18
- - rvm: 2.1.0
19
- gemfile: gemfiles/rails5.gemfile
20
- - rvm: 2.2.0
21
- gemfile: gemfiles/rails5.gemfile
22
- - rvm: 2.5.0
23
- gemfile: gemfiles/rails3.gemfile
24
- - rvm: 2.6.0
18
+ - rvm: 2.7.5
25
19
  gemfile: gemfiles/rails3.gemfile
26
20
  script: bundle exec rspec
27
21
  before_install:
28
- - gem install bundler -v '< 2'
22
+ - gem install bundler
data/Appraisals CHANGED
@@ -1,20 +1,9 @@
1
- appraise "rails3" do
2
- gem "actionpack", "3.0.12"
3
- gem "actionmailer", "3.0.12"
1
+ appraise 'rails6' do
2
+ gem 'actionpack', '6.0.0'
3
+ gem 'actionmailer', '6.0.0'
4
4
  end
5
5
 
6
- appraise "rails4" do
7
- gem "actionpack", "4.0.0"
8
- gem "actionmailer", "4.0.0"
6
+ appraise 'rails7' do
7
+ gem 'actionpack', '7.0.1'
8
+ gem 'actionmailer', '7.0.1'
9
9
  end
10
-
11
- appraise "rails5" do
12
- gem "actionpack", "5.0.0"
13
- gem "actionmailer", "5.0.0"
14
- end
15
-
16
- # TODO: uncomment this once Rails 6 is released on April 30, 2019
17
- # appraise "rails6" do
18
- # gem "actionpack", "6.0.0"
19
- # gem "actionmailer", "6.0.0"
20
- # end
data/CHANGELOG.md ADDED
@@ -0,0 +1 @@
1
+ * Add Rails 6 support.
data/Gemfile CHANGED
@@ -5,9 +5,12 @@ gemspec
5
5
  # Hinting at development dependencies
6
6
  # Prevents bundler from taking a long-time to resolve
7
7
  group :development, :test do
8
- gem 'pry'
9
- gem 'rspec'
10
8
  gem 'builder'
9
+ gem 'byebug', platforms: %i[mri mingw x64_mingw]
11
10
  gem 'rb-readline'
12
- gem 'coveralls'
13
- end
11
+ gem 'rspec'
12
+ end
13
+
14
+ group :development do
15
+ gem 'rubocop', '~> 1.57', require: false
16
+ end
data/Gemfile.lock CHANGED
@@ -1,127 +1,195 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- meta_presenter (0.2.3)
4
+ meta_presenter (1.0.0)
5
5
  actionmailer (>= 3.0.12)
6
6
  actionpack (>= 3.0.12)
7
7
 
8
8
  GEM
9
9
  remote: https://rubygems.org/
10
10
  specs:
11
- actionmailer (6.0.0)
12
- actionpack (= 6.0.0)
13
- actionview (= 6.0.0)
14
- activejob (= 6.0.0)
11
+ actionmailer (7.1.1)
12
+ actionpack (= 7.1.1)
13
+ actionview (= 7.1.1)
14
+ activejob (= 7.1.1)
15
+ activesupport (= 7.1.1)
15
16
  mail (~> 2.5, >= 2.5.4)
16
- rails-dom-testing (~> 2.0)
17
- actionpack (6.0.0)
18
- actionview (= 6.0.0)
19
- activesupport (= 6.0.0)
20
- rack (~> 2.0)
17
+ net-imap
18
+ net-pop
19
+ net-smtp
20
+ rails-dom-testing (~> 2.2)
21
+ actionpack (7.1.1)
22
+ actionview (= 7.1.1)
23
+ activesupport (= 7.1.1)
24
+ nokogiri (>= 1.8.5)
25
+ rack (>= 2.2.4)
26
+ rack-session (>= 1.0.1)
21
27
  rack-test (>= 0.6.3)
22
- rails-dom-testing (~> 2.0)
23
- rails-html-sanitizer (~> 1.0, >= 1.2.0)
24
- actionview (6.0.0)
25
- activesupport (= 6.0.0)
28
+ rails-dom-testing (~> 2.2)
29
+ rails-html-sanitizer (~> 1.6)
30
+ actionview (7.1.1)
31
+ activesupport (= 7.1.1)
26
32
  builder (~> 3.1)
27
- erubi (~> 1.4)
28
- rails-dom-testing (~> 2.0)
29
- rails-html-sanitizer (~> 1.1, >= 1.2.0)
30
- activejob (6.0.0)
31
- activesupport (= 6.0.0)
33
+ erubi (~> 1.11)
34
+ rails-dom-testing (~> 2.2)
35
+ rails-html-sanitizer (~> 1.6)
36
+ activejob (7.1.1)
37
+ activesupport (= 7.1.1)
32
38
  globalid (>= 0.3.6)
33
- activesupport (6.0.0)
39
+ activesupport (7.1.1)
40
+ base64
41
+ bigdecimal
34
42
  concurrent-ruby (~> 1.0, >= 1.0.2)
35
- i18n (>= 0.7, < 2)
36
- minitest (~> 5.1)
37
- tzinfo (~> 1.1)
38
- zeitwerk (~> 2.1, >= 2.1.8)
39
- appraisal (2.2.0)
43
+ connection_pool (>= 2.2.5)
44
+ drb
45
+ i18n (>= 1.6, < 2)
46
+ minitest (>= 5.1)
47
+ mutex_m
48
+ tzinfo (~> 2.0)
49
+ appraisal (2.5.0)
40
50
  bundler
41
51
  rake
42
52
  thor (>= 0.14.0)
43
- builder (3.2.3)
44
- coderay (1.1.2)
45
- concurrent-ruby (1.1.5)
53
+ ast (2.4.2)
54
+ base64 (0.1.1)
55
+ bigdecimal (3.1.4)
56
+ builder (3.2.4)
57
+ byebug (11.1.3)
58
+ coderay (1.1.3)
59
+ concurrent-ruby (1.2.2)
60
+ connection_pool (2.4.1)
46
61
  coveralls (0.8.23)
47
62
  json (>= 1.8, < 3)
48
63
  simplecov (~> 0.16.1)
49
64
  term-ansicolor (~> 1.3)
50
65
  thor (>= 0.19.4, < 2.0)
51
66
  tins (~> 1.6)
52
- crass (1.0.4)
53
- diff-lcs (1.3)
54
- docile (1.3.2)
55
- erubi (1.8.0)
56
- globalid (0.4.2)
57
- activesupport (>= 4.2.0)
58
- i18n (1.6.0)
67
+ crass (1.0.6)
68
+ date (3.3.3)
69
+ diff-lcs (1.5.0)
70
+ docile (1.4.0)
71
+ drb (2.1.1)
72
+ ruby2_keywords
73
+ erubi (1.12.0)
74
+ globalid (1.2.1)
75
+ activesupport (>= 6.1)
76
+ i18n (1.14.1)
59
77
  concurrent-ruby (~> 1.0)
60
- json (2.2.0)
61
- loofah (2.2.3)
78
+ json (2.6.3)
79
+ language_server-protocol (3.17.0.3)
80
+ loofah (2.21.4)
62
81
  crass (~> 1.0.2)
63
- nokogiri (>= 1.5.9)
64
- mail (2.7.1)
82
+ nokogiri (>= 1.12.0)
83
+ mail (2.8.1)
65
84
  mini_mime (>= 0.1.1)
66
- method_source (0.9.2)
67
- mini_mime (1.0.2)
68
- mini_portile2 (2.4.0)
69
- minitest (5.11.3)
70
- nokogiri (1.10.4)
71
- mini_portile2 (~> 2.4.0)
72
- pry (0.12.2)
73
- coderay (~> 1.1.0)
74
- method_source (~> 0.9.0)
75
- rack (2.0.7)
76
- rack-test (1.1.0)
77
- rack (>= 1.0, < 3)
78
- rails-dom-testing (2.0.3)
79
- activesupport (>= 4.2.0)
85
+ net-imap
86
+ net-pop
87
+ net-smtp
88
+ method_source (1.0.0)
89
+ mini_mime (1.1.5)
90
+ mini_portile2 (2.8.4)
91
+ minitest (5.20.0)
92
+ mutex_m (0.1.2)
93
+ net-imap (0.4.1)
94
+ date
95
+ net-protocol
96
+ net-pop (0.1.2)
97
+ net-protocol
98
+ net-protocol (0.2.1)
99
+ timeout
100
+ net-smtp (0.4.0)
101
+ net-protocol
102
+ nokogiri (1.15.4)
103
+ mini_portile2 (~> 2.8.2)
104
+ racc (~> 1.4)
105
+ nokogiri (1.15.4-arm64-darwin)
106
+ racc (~> 1.4)
107
+ parallel (1.23.0)
108
+ parser (3.2.2.4)
109
+ ast (~> 2.4.1)
110
+ racc
111
+ pry (0.14.2)
112
+ coderay (~> 1.1)
113
+ method_source (~> 1.0)
114
+ racc (1.7.1)
115
+ rack (3.0.8)
116
+ rack-session (2.0.0)
117
+ rack (>= 3.0.0)
118
+ rack-test (2.1.0)
119
+ rack (>= 1.3)
120
+ rails-dom-testing (2.2.0)
121
+ activesupport (>= 5.0.0)
122
+ minitest
80
123
  nokogiri (>= 1.6)
81
- rails-html-sanitizer (1.2.0)
82
- loofah (~> 2.2, >= 2.2.2)
83
- rake (12.3.3)
124
+ rails-html-sanitizer (1.6.0)
125
+ loofah (~> 2.21)
126
+ nokogiri (~> 1.14)
127
+ rainbow (3.1.1)
128
+ rake (13.0.6)
84
129
  rb-readline (0.5.5)
85
- rspec (3.8.0)
86
- rspec-core (~> 3.8.0)
87
- rspec-expectations (~> 3.8.0)
88
- rspec-mocks (~> 3.8.0)
89
- rspec-core (3.8.2)
90
- rspec-support (~> 3.8.0)
91
- rspec-expectations (3.8.4)
130
+ regexp_parser (2.8.2)
131
+ rexml (3.2.6)
132
+ rspec (3.12.0)
133
+ rspec-core (~> 3.12.0)
134
+ rspec-expectations (~> 3.12.0)
135
+ rspec-mocks (~> 3.12.0)
136
+ rspec-core (3.12.2)
137
+ rspec-support (~> 3.12.0)
138
+ rspec-expectations (3.12.3)
92
139
  diff-lcs (>= 1.2.0, < 2.0)
93
- rspec-support (~> 3.8.0)
94
- rspec-mocks (3.8.1)
140
+ rspec-support (~> 3.12.0)
141
+ rspec-mocks (3.12.6)
95
142
  diff-lcs (>= 1.2.0, < 2.0)
96
- rspec-support (~> 3.8.0)
97
- rspec-support (3.8.2)
143
+ rspec-support (~> 3.12.0)
144
+ rspec-support (3.12.1)
145
+ rubocop (1.57.1)
146
+ base64 (~> 0.1.1)
147
+ json (~> 2.3)
148
+ language_server-protocol (>= 3.17.0)
149
+ parallel (~> 1.10)
150
+ parser (>= 3.2.2.4)
151
+ rainbow (>= 2.2.2, < 4.0)
152
+ regexp_parser (>= 1.8, < 3.0)
153
+ rexml (>= 3.2.5, < 4.0)
154
+ rubocop-ast (>= 1.28.1, < 2.0)
155
+ ruby-progressbar (~> 1.7)
156
+ unicode-display_width (>= 2.4.0, < 3.0)
157
+ rubocop-ast (1.29.0)
158
+ parser (>= 3.2.1.0)
159
+ ruby-progressbar (1.13.0)
160
+ ruby2_keywords (0.0.5)
98
161
  simplecov (0.16.1)
99
162
  docile (~> 1.1)
100
163
  json (>= 1.8, < 3)
101
164
  simplecov-html (~> 0.10.0)
102
165
  simplecov-html (0.10.2)
166
+ sync (0.5.0)
103
167
  term-ansicolor (1.7.1)
104
168
  tins (~> 1.0)
105
- thor (0.20.3)
106
- thread_safe (0.3.6)
107
- tins (1.21.1)
108
- tzinfo (1.2.5)
109
- thread_safe (~> 0.1)
110
- zeitwerk (2.1.9)
169
+ thor (1.3.0)
170
+ timeout (0.4.0)
171
+ tins (1.32.1)
172
+ sync
173
+ tzinfo (2.0.6)
174
+ concurrent-ruby (~> 1.0)
175
+ unicode-display_width (2.5.0)
111
176
 
112
177
  PLATFORMS
178
+ arm64-darwin-23
113
179
  ruby
114
180
 
115
181
  DEPENDENCIES
116
182
  appraisal
117
183
  builder
118
184
  bundler
185
+ byebug
119
186
  coveralls
120
187
  meta_presenter!
121
188
  pry
122
189
  rake
123
190
  rb-readline
124
191
  rspec
192
+ rubocop (~> 1.57)
125
193
 
126
194
  BUNDLED WITH
127
- 1.17.3
195
+ 2.4.21
data/README.md CHANGED
@@ -8,19 +8,19 @@ MetaPresenter is a Ruby gem for writing highly focused and testable Rails view p
8
8
 
9
9
  ## Installation
10
10
 
11
- 1. Add this line to your application's Gemfile:
11
+ ### 1. Add this line to your application's Gemfile
12
12
 
13
13
  ```ruby
14
14
  gem 'meta_presenter'
15
15
  ```
16
16
 
17
- 2. Bundle from the command line:
17
+ ### 2. Bundle from the command line
18
18
 
19
19
  ```sh
20
- $ bundle
20
+ bundle install
21
21
  ```
22
22
 
23
- 3. Include MetaPresenter::Helpers in your controller or mailer:
23
+ ### 3. Include MetaPresenter::Helpers in ApplicationController
24
24
 
25
25
  ```ruby
26
26
  class ApplicationController < ActionController::Base
@@ -29,157 +29,103 @@ end
29
29
  ```
30
30
 
31
31
  ```ruby
32
+ # mailers are supported too
32
33
  class ApplicationMailer < ActionMailer::Base
33
34
  include MetaPresenter::Helpers
34
35
  end
35
36
  ```
36
37
 
37
- ## Example
38
+ ## Setup
38
39
 
39
- Say you have a PagesController with `#home` and `#logs` actions. Underneath app/presenters you can add a presenter class for each action (Pages::HomePresenter and Pages::LogsPresenter). We'll also create an ApplicationPresenter superclass for methods that can be used in any action throughout the app.
40
+ ### 1. Create an ApplicationPresenter
40
41
 
41
- ```
42
- app/
43
- controllers/
44
- application_controller.rb
45
- pages_controller.rb
46
- presenters/
47
- application_presenter.rb
48
- pages_presenter.rb
49
- pages/
50
- home_presenter.rb
51
- logs_presenter.rb
52
- views
53
- pages
54
- home.html.erb
55
- logs.html.erb
56
- spec/ (or test/)
57
- presenters/
58
- application_presenter_spec.rb
59
- pages_presenter_spec.rb
60
- pages/
61
- home_presenter_spec.rb
62
- logs_presenter_spec.rb
63
- ```
64
-
65
- app/controllers/page_controller.rb
66
-
67
- ```ruby
68
- class ApplicationController < ActionController::Base
69
- include MetaPresenter::Helpers
70
-
71
- # Controller methods automatically become available in views and other presenters.
72
- # So this gives you presenter.current_user in views, and you can call `current_user`
73
- # within your presenters as well
74
- def current_user
75
- User.first
76
- end
77
- end
78
- ```
79
-
80
- app/controllers/dashboard_controller.rb
81
-
82
- ```ruby
83
- class ApplicationController < ActionController::Base
84
- def home
85
- end
86
-
87
- def logs
88
- end
89
-
90
- private
91
- # presenter.logs in views
92
- def logs
93
- Log.all
94
- end
95
- end
96
- ```
97
-
98
- app/presenters/application_presenter.rb
42
+ ApplicationPresenter methods can be used anywhere in the app. This example makes `presenter.page_title` and `presenter.last_login` accessible from all views.
99
43
 
100
44
  ```ruby
45
+ # app/presenters/application_presenter.rb
101
46
  class ApplicationPresenter < MetaPresenter::BasePresenter
102
- # Makes presenter.page_title available in all of your app's views
103
47
  def page_title
104
48
  "My App"
105
49
  end
106
50
 
107
- # presenter.last_login_at in views
108
- def last_login_at
109
- # controller methods from within the same scope
110
- # as the presenter are directly available
111
- current_user.last_login_at
51
+ def last_login
52
+ # controller methods are available to
53
+ # presenters in the same namespace
54
+ time = current_user.last_login_at
55
+ distance_of_time_in_words_to_now(time)
112
56
  end
113
57
  end
114
58
  ```
115
59
 
116
- app/presenters/pages_presenter.rb
60
+ #### 2. Create presenters for your controllers
61
+
62
+ This example makes `presenter.tooltip(text)` available for all actions on `PagesController`:
117
63
 
118
64
  ```ruby
65
+ # app/presenters/pages_presenter.rb
119
66
  class PagesPresenter < ApplicationPresenter
120
- # Makes presenter.nav_items available for
121
- # all actions on PagesController
122
- def nav_items
123
- [
124
- {name: "Home", path: home_path},
125
- {name: "Logs", path: logs_path}
126
- ]
67
+ def tooltip(text)
68
+ content_tag(:p, text, class: "font-body1")
127
69
  end
128
70
  end
129
71
  ```
130
72
 
131
- app/presenters/pages/home_presenter.rb
73
+ ```Erb
74
+ <!-- app/views/pages/about.html.erb -->
75
+ <h1>About</h1>
76
+ <p data-tipsy-content="<%= presenter.tooltip("Don't Be Evil") %>">Gloogle</p>
77
+ ```
78
+
79
+ #### 3. Create presenters for specific actions
80
+
81
+ This example makes `presenter.greeting` accessible from views. It also delegates undefined methods to `current_user`, so `presenter.email` would call `current_user.email`:
132
82
 
133
83
  ```ruby
84
+ # app/presenters/pages/home_presenter.rb
134
85
  class Pages::HomePresenter < PagesPresenter
135
- # presenter.email, presenter.id or any other
136
- # method not already defined will delegate to
137
- # the current_user
86
+ # can also delegate specific methods. ex:
87
+ # delegate :email, :last, to: :current_user
138
88
  delegate_all_to = :current_user
139
89
 
140
- # presenter.greeting in views
141
90
  def greeting
142
- "Hello, #{current_user.name}"
91
+ "Hello, #{name}"
143
92
  end
144
93
  end
145
94
  ```
146
95
 
147
- app/views/pages/home.html.erb
148
-
149
96
  ```Erb
97
+ <!-- app/views/pages/home.html.erb -->
150
98
  <h1>Home</h1>
151
99
  <p><%= presenter.greeting %></p>
152
- <p>Last login <%= distance_of_time_in_words_to_now(presenter.last_login_at) %></p>
100
+ <p>Last login <%= presenter.last_login %></p>
153
101
  ```
154
102
 
155
- app/presenters/pages/logs_presenter.rb
156
-
157
- ```ruby
158
- class Pages::LogsPresenter < PagesPresenter
159
- # presenter.size and presenter.last will delegate to
160
- # the controller's private `#logs`
161
- delegate :size, :last, to: :logs
162
-
163
- # presenter.log_text(log) in view
164
- def log_text(log)
165
- log.description
166
- end
167
- end
168
- ```
103
+ ## Example directory structure
169
104
 
170
- app/views/pages/logs.html.erb
105
+ Note that presenters mirror the namespace of controllers.
171
106
 
172
- ```Erb
173
- <h1>Logs</h1>
174
- <p>Num logs: #{presenter.size}</p>
175
- <p>Last log: #{presenter.log_text(presenter.last)}</p>
176
- <ul>
177
- <% presenter.logs.each do |log| %>
178
- <li>
179
- <%= presenter.log_text(log) %>
180
- </li>
181
- <% end %>
182
- </ul>
107
+ ```diagram
108
+ app/
109
+ controllers/
110
+ application_controller.rb
111
+ pages_controller.rb
112
+ presenters/
113
+ application_presenter.rb
114
+ pages_presenter.rb
115
+ pages/
116
+ home_presenter.rb
117
+ logs_presenter.rb
118
+ views
119
+ pages
120
+ home.html.erb
121
+ logs.html.erb
122
+ spec/ (or test/)
123
+ presenters/
124
+ application_presenter_spec.rb
125
+ pages_presenter_spec.rb
126
+ pages/
127
+ home_presenter_spec.rb
128
+ logs_presenter_spec.rb
183
129
  ```
184
130
 
185
131
  ## Aliasing the presenter methods
@@ -197,35 +143,50 @@ end
197
143
 
198
144
  ## Requirements
199
145
 
200
- MetaPresenter supports Ruby >= 2.1 and ActionPack/ActionMailer >= 3.0.12. If you'd like to help adding support for older versions please submit a pull request with passing specs.
146
+ MetaPresenter supports Ruby >= 2.7.5 and ActionPack/ActionMailer >= 6
201
147
 
202
148
  ## Links
203
149
 
204
- * [Project website](https://metapresenter.com)
205
- * [RDocs for the master branch](https://www.rubydoc.info/github/szTheory/meta-presenter/master)
150
+ - [Project website](https://metapresenter.com)
151
+ - [RDocs for the master branch](https://www.rubydoc.info/github/szTheory/meta-presenter/master)
206
152
 
207
153
  ## Specs
154
+
208
155
  To run the specs for the currently running Ruby version, run `bundle install` and then `bundle exec rspec`. To run specs for every supported version of ActionPack, run `bundle exec appraisal install` and then `bundle exec appraisal rspec`.
209
156
 
210
157
  ## Gem release
158
+
211
159
  Make sure the specs pass, bump the version number in meta_presenter.gemspec, build the gem with `gem build meta_presenter.gemspec`. Commit your changes and push to Github, then tag the commit with the current release number using Github's Releases interface (use the format vx.x.x, where x is the semantic version number). You can pull the latest tags to your local repo with `git pull --tags`. Finally, push the gem with `gem push meta_presenter-version-number-here.gem`.
212
160
 
161
+ ## TODO High-Priority
162
+
163
+ - Add a `rake meta_presenter:install` that generates the scaffolding for you
164
+ - Make sure directions are clear for manually creating presenters
165
+
213
166
  ## TODO
214
- * create an example app and link to the repo for it in this README
215
- * proofread the README instructions to make sure everything is correct
216
- * optional `rake meta_presenter:install` that generates the scaffolding for you. Or, you can manually create the files you want.
217
- * add support for layout-level presenters
218
- * add Rails 6 support once it comes out (hopefully just have to add a gemfiles/actionpack6.gemfile and it will run with the Appraisal suite)
167
+
168
+ - create an example app and link to the repo for it in this README
169
+ - add support for layout-level presenters
219
170
 
220
171
  ## Contributing
221
172
 
222
173
  1. Fork it
223
- 2. Create your feature branch (`git checkout -b feature/my-new-feature`) or bugfix branch (`git checkout -b bugfix/my-helpful-bugfix`)
174
+ 2. Create your feature branch (`git checkout -b feature/my-new-feature`) or bugfix branch (`git checkout -b bugfix/my-helpful-bugfix`)
224
175
  3. Commit your changes (`git commit -am 'Add some feature'`)
225
176
  4. Push to the branch (`git push origin feature/my-new-feature`)
226
177
  5. Make sure specs are passing (`bundle exec rspec`)
227
178
  6. Create new Pull Request
228
179
 
180
+ ## Running the specs
181
+
182
+ To run specs against different versions of Rails:
183
+
184
+ ```bash
185
+ bundle exec appraisal install #install dependencies for each ruby version
186
+ bundle exec appraisal rails6 rspec #run rails 6 specs on current Ruby
187
+ bundle exec appraisal rails7 rspec #run rails 7 specs on current Ruby
188
+ ```
189
+
229
190
  ## License
230
191
 
231
192
  See the [LICENSE](https://github.com/szTheory/meta_presenter/blob/master/LICENSE.txt) file.