abraham 2.3.0.beta → 2.4.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: 5872e5ab9e3d24a4133de7b4127934eba2b36688eac51eb4f29bfdd9c7a0f1ff
4
- data.tar.gz: ead10365b2cdf82e9f9e49f7ee55d9525731093b0b1b6faafe720b789766c977
3
+ metadata.gz: f6e2b0fdbb25af11f86da525702df7f8c2d9464367eb54498293eca7241f84eb
4
+ data.tar.gz: 22ef247ce7aafbd7a3ca924e2276e1b4e72177e88a8220918f642f98d299de41
5
5
  SHA512:
6
- metadata.gz: 810d59a5b7d8f35d787d65fec4e42c46cb27edc7228272aa337adb31ddf9a4f35167610046f99861af51ccd0a65dea2bd77d32ac41f8fd07ed5f349516faa8b4
7
- data.tar.gz: bfe6c59e405805b0e98938480037fc5a2c40ef4ae965558060ac4767cbc522890b131f634a190847b92d759b9facd7ba472d4f67b8a0b32eb183f660164f7487
6
+ metadata.gz: 32d4be8a289fba23b74c39c6179167835f74951f70e4744b5bf1a15bc88d0c4583d8027469e09b98e4789ebdbca59b7565a9f634d167a86941414255916ee7c5
7
+ data.tar.gz: 2daafd2638b951436faf4b904ecf4aeb57c73034a3783debc77337b67de3dc7bd3ec037f2c4e31e05d08e7a6cc56e3959ac9a6eb6ea534306a18a944535b4fa3
data/README.md CHANGED
@@ -78,12 +78,15 @@ Tell Abraham where to insert its generated JavaScript in `app/views/layouts/appl
78
78
 
79
79
  ## Defining your tours
80
80
 
81
- Define your tours in the `config/tours` directory corresponding to the views defined in your application. Its directory structure mirrors your application's controllers, and the tour files mirror your actions/views.
81
+ Define your tours in the `config/tours` directory corresponding to the views defined in your application. Its directory structure mirrors your application's controllers, and the tour files mirror your actions/views. (As of version 2.4.0, Abraham respects controllers organized into modules.)
82
82
 
83
83
  ```
84
84
  config/
85
85
  └── tours/
86
- └── blog/
86
+ ├── admin/
87
+ │ └── articles/
88
+ │ └── edit.en.yml
89
+ ├── blog/
87
90
  │ ├── show.en.yml
88
91
  │ └── show.es.yml
89
92
  └── articles/
@@ -147,7 +150,8 @@ Abraham tries to be helpful when your tour steps attach to page elements that ar
147
150
 
148
151
  ### Automatic vs. manual tours
149
152
 
150
- By default, Abraham will automatically start a tour that the current user hasn't seen yet. You can instead define a tour to be triggered manually using the `trigger` option:
153
+ By default, Abraham will automatically start a tour that the current user hasn't seen yet.
154
+ You can instead define a tour to be triggered manually using the `trigger` option:
151
155
 
152
156
  ```yml
153
157
  walkthrough:
@@ -193,7 +197,18 @@ end
193
197
 
194
198
  We provide a [small example app](https://github.com/actmd/abraham-example) that implements Abraham, so you can see it in action.
195
199
 
196
- ## Upgrading from version 1
200
+ ## Upgrading
201
+
202
+ ### From version 2.3.0 or earlier
203
+
204
+ Abraham 2.4.0 introduced an updated initializer that supports controllers organized into modules.
205
+ Rerun the generator with these options to replace the old initializer:
206
+
207
+ ```
208
+ $ rails generate abraham:install --skip-migration --skip-config
209
+ ```
210
+
211
+ ### From version 1
197
212
 
198
213
  Abraham v1 was built using Shepherd 1.8, v2 now uses Shepherd 6 – quite a jump, yes.
199
214
 
@@ -249,7 +264,7 @@ gem 'abraham', path: '~/Workspace/abraham'
249
264
 
250
265
  #### Automated testing
251
266
 
252
- We use TravisCI to automatically test this engine with Rails 5.2, 6.0, and 6.1. For test history, venture over to [TravisCI](https://travis-ci.com/actmd/abraham).
267
+ We use GitHub Actions to automatically test this engine with Rails 5.2, 6.0, and 6.1.
253
268
 
254
269
  ### Releasing
255
270
 
@@ -3,15 +3,15 @@
3
3
  module AbrahamHelper
4
4
  def abraham_tour
5
5
  # Do we have tours for this controller/action in the user's locale?
6
- tours = Rails.configuration.abraham.tours["#{controller_name}.#{action_name}.#{I18n.locale}"]
6
+ tours = Rails.configuration.abraham.tours["#{controller_path}.#{action_name}.#{I18n.locale}"]
7
7
  # Otherwise, default to the default locale
8
- tours ||= Rails.configuration.abraham.tours["#{controller_name}.#{action_name}.#{I18n.default_locale}"]
8
+ tours ||= Rails.configuration.abraham.tours["#{controller_path}.#{action_name}.#{I18n.default_locale}"]
9
9
 
10
10
  if tours
11
11
  # Have any automatic tours been completed already?
12
12
  completed = AbrahamHistory.where(
13
13
  creator_id: current_user.id,
14
- controller_name: controller_name,
14
+ controller_name: controller_path,
15
15
  action_name: action_name
16
16
  )
17
17
 
@@ -33,7 +33,7 @@ module AbrahamHelper
33
33
  end
34
34
 
35
35
  def abraham_cookie_prefix
36
- "abraham-#{fetch_application_name.to_s.underscore}-#{current_user.id}-#{controller_name}-#{action_name}"
36
+ "abraham-#{fetch_application_name.to_s.underscore}-#{current_user.id}-#{controller_path}-#{action_name}"
37
37
  end
38
38
 
39
39
  def fetch_application_name
@@ -44,7 +44,6 @@ module AbrahamHelper
44
44
  end
45
45
  end
46
46
 
47
-
48
47
  def abraham_domain
49
48
  request.host
50
49
  end
@@ -9,7 +9,7 @@
9
9
  headers: { 'Content-Type': 'application/json' },
10
10
  body: JSON.stringify({
11
11
  authenticity_token: '<%= form_authenticity_token %>',
12
- controller_name: '<%= controller_name %>',
12
+ controller_name: '<%= controller_path %>',
13
13
  action_name: '<%= action_name %>',
14
14
  tour_name: '<%= tour_name %>'
15
15
  })
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Abraham
4
- VERSION = "2.3.0.beta"
4
+ VERSION = "2.4.0"
5
5
  end
@@ -10,6 +10,7 @@ module Abraham
10
10
 
11
11
  class_option :'skip-migration', type: :boolean, desc: "Don't generate a migration for the histories table"
12
12
  class_option :'skip-initializer', type: :boolean, desc: "Don't generate an initializer"
13
+ class_option :'skip-config', type: :boolean, desc: "Don't generate a config file"
13
14
 
14
15
  source_root File.expand_path(File.join(File.dirname(__FILE__), "templates"))
15
16
 
@@ -24,6 +25,11 @@ module Abraham
24
25
  return if options["skip-initializer"]
25
26
 
26
27
  copy_file "initializer.rb", "config/initializers/abraham.rb"
28
+ end
29
+
30
+ def create_config
31
+ return if options["skip-config"]
32
+
27
33
  copy_file "abraham.yml", "config/abraham.yml"
28
34
  end
29
35
  end
@@ -2,18 +2,18 @@
2
2
 
3
3
  Rails.application.configure do
4
4
  tours = {}
5
+ tours_root = Pathname.new(Rails.root.join("config/tours"))
5
6
 
6
- if Rails.root.join('config/tours').exist?
7
- Dir[Rails.root.join('config/tours/*/')].each do |dir|
8
- Dir[dir + '*.yml'].each do |yml|
9
- path_parts = yml.split(File::SEPARATOR)
10
- controller = path_parts[path_parts.size - 2]
11
- file_parts = path_parts[path_parts.size - 1].split('.')
12
- action = file_parts[0]
13
- locale = file_parts[1]
14
- t = YAML.load_file(yml)
15
- tours["#{controller}.#{action}.#{locale}"] = t
16
- end
7
+ if Rails.root.join("config/tours").exist?
8
+ Dir.glob(Rails.root.join("config/tours/**/*.yml")).each do |yml|
9
+ relative_filename = Pathname.new(yml).relative_path_from(tours_root)
10
+ # `controller_path` is either "controller_name" or "module_name/controller_name"
11
+ controller_path, filename = relative_filename.split
12
+ file_parts = filename.to_s.split(".")
13
+ action = file_parts[0]
14
+ locale = file_parts[1]
15
+ t = YAML.load_file(yml)
16
+ tours["#{controller_path}.#{action}.#{locale}"] = t
17
17
  end
18
18
  end
19
19
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: abraham
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.3.0.beta
4
+ version: 2.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jonathan Abbett
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-04-21 00:00:00.000000000 Z
11
+ date: 2021-06-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: sassc-rails
@@ -126,9 +126,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
126
126
  version: '0'
127
127
  required_rubygems_version: !ruby/object:Gem::Requirement
128
128
  requirements:
129
- - - ">"
129
+ - - ">="
130
130
  - !ruby/object:Gem::Version
131
- version: 1.3.1
131
+ version: '0'
132
132
  requirements: []
133
133
  rubygems_version: 3.0.8
134
134
  signing_key: