meta_presenter 0.2.4 → 1.0.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
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.