bobot 2.6.2 → 3.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +139 -63
- data/app/controllers/bobot/application_controller.rb +0 -1
- data/app/controllers/bobot/webhook_controller.rb +2 -16
- data/app/jobs/bobot/deliver_job.rb +2 -2
- data/lib/bobot.rb +1 -0
- data/lib/bobot/commander.rb +5 -5
- data/lib/bobot/configuration.rb +5 -192
- data/lib/bobot/events/common.rb +16 -105
- data/lib/bobot/events/message_echo.rb +1 -1
- data/lib/bobot/graph_facebook.rb +6 -12
- data/lib/bobot/page.rb +331 -0
- data/lib/bobot/version.rb +3 -3
- data/lib/generators/bobot/install_generator.rb +1 -3
- data/lib/generators/bobot/templates/config/initializers/bobot.rb +4 -5
- data/lib/generators/bobot/templates/config/locales/bobot.en.yml +8 -8
- data/lib/generators/bobot/templates/config/locales/bobot.fr.yml +8 -8
- data/lib/generators/bobot/uninstall_generator.rb +0 -1
- data/spec/bobot/bobot_spec.rb +3 -3
- data/spec/bobot/event/common_spec.rb +28 -16
- data/spec/bobot/page_spec.rb +61 -0
- data/spec/bobot/profile_spec.rb +1 -1
- data/spec/bobot/subscription_spec.rb +1 -1
- data/spec/bobot/user_spec.rb +1 -1
- data/spec/dummy/log/development.log +45 -0
- data/spec/dummy/log/test.log +24 -0
- data/spec/dummy/public/favicon.ico +0 -0
- data/spec/dummy/tmp/generator/config/initializers/bobot.rb +8 -8
- metadata +7 -7
- data/lib/generators/bobot/templates/config/bobot.yml +0 -52
- data/spec/dummy/tmp/generator/config/bobot.yml +0 -52
- data/spec/travis/database.travis.mysql.yml +0 -19
data/lib/bobot/version.rb
CHANGED
@@ -13,13 +13,11 @@ module Bobot
|
|
13
13
|
desc 'Bobot install'
|
14
14
|
|
15
15
|
def install
|
16
|
+
remove_file 'config/initializers/bobot.rb'
|
16
17
|
namespace = ask_for('Where do you want to mount bobot?', 'bot', _namespace)
|
17
|
-
create_file 'config/routes.rb'
|
18
|
-
gsub_file 'config/routes.rb', %r{mount Bobot::Engine => \'\/.+\'(, as: \'bot\')?}, ''
|
19
18
|
route("mount Bobot::Engine => '/#{namespace}', as: 'bot'")
|
20
19
|
template 'config/initializers/bobot.rb', 'config/initializers/bobot.rb'
|
21
20
|
template 'app/bobot/workflow.rb', 'app/bobot/workflow.rb'
|
22
|
-
copy_file 'config/bobot.yml', 'config/bobot.yml'
|
23
21
|
copy_file 'config/locales/bobot.en.yml', 'config/locales/bobot.en.yml'
|
24
22
|
copy_file 'config/locales/bobot.fr.yml', 'config/locales/bobot.fr.yml'
|
25
23
|
display 'Installation done', :green
|
@@ -1,5 +1,5 @@
|
|
1
|
-
bobot_config_path = Rails.root.join("config", "
|
2
|
-
bobot_config = YAML.safe_load(ERB.new(File.read(bobot_config_path)).result, [], [], true)[Rails.env]
|
1
|
+
bobot_config_path = Rails.root.join("config", "secrets.yml")
|
2
|
+
bobot_config = YAML.safe_load(ERB.new(File.read(bobot_config_path)).result, [], [], true)[Rails.env]["bobot"]
|
3
3
|
|
4
4
|
if bobot_config.present?
|
5
5
|
unless bobot_config.key?("pages")
|
@@ -10,14 +10,13 @@ if bobot_config.present?
|
|
10
10
|
config.app_secret = bobot_config["app_secret"],
|
11
11
|
config.verify_token = bobot_config["verify_token"],
|
12
12
|
config.domains = bobot_config["domains"],
|
13
|
-
config.debug_log = bobot_config["debug_log"],
|
14
13
|
config.async = bobot_config["async"],
|
15
14
|
bobot_config["pages"].each do |page|
|
16
|
-
config.pages << Bobot::
|
15
|
+
config.pages << Bobot::Page.new(
|
17
16
|
slug: page["slug"],
|
18
17
|
language: page["language"],
|
19
|
-
page_access_token: page["page_access_token"],
|
20
18
|
page_id: page["page_id"],
|
19
|
+
page_access_token: page["page_access_token"],
|
21
20
|
get_started_payload: page["get_started_payload"],
|
22
21
|
)
|
23
22
|
end
|
@@ -10,17 +10,17 @@ en:
|
|
10
10
|
persistent_menu:
|
11
11
|
composer_input_disabled: false
|
12
12
|
call_to_actions:
|
13
|
-
-
|
14
|
-
|
13
|
+
- type: "nested"
|
14
|
+
title: "My Account"
|
15
15
|
call_to_actions:
|
16
|
-
-
|
17
|
-
|
16
|
+
- type: "postback"
|
17
|
+
title: "What is a chatbot?"
|
18
18
|
payload: "WHAT_IS_A_CHATBOT"
|
19
|
-
-
|
20
|
-
|
19
|
+
- type: "postback"
|
20
|
+
title: "History"
|
21
21
|
payload: "HISTORY_PAYLOAD"
|
22
|
-
-
|
23
|
-
|
22
|
+
- type: "postback"
|
23
|
+
title: "Contact Info"
|
24
24
|
payload: "CONTACT_INFO_PAYLOAD"
|
25
25
|
- type: "web_url"
|
26
26
|
title: "Get some help"
|
@@ -9,17 +9,17 @@ fr:
|
|
9
9
|
persistent_menu:
|
10
10
|
composer_input_disabled: false
|
11
11
|
call_to_actions:
|
12
|
-
-
|
13
|
-
|
12
|
+
- type: "nested"
|
13
|
+
title: "Mon compte"
|
14
14
|
call_to_actions:
|
15
|
-
-
|
16
|
-
|
15
|
+
- type: "postback"
|
16
|
+
title: "C'est quoi un chatbot ?"
|
17
17
|
payload: "WHAT_IS_A_CHATBOT"
|
18
|
-
-
|
19
|
-
|
18
|
+
- type: "postback"
|
19
|
+
title: "Historique"
|
20
20
|
payload: "HISTORY_PAYLOAD"
|
21
|
-
-
|
22
|
-
|
21
|
+
- type: "postback"
|
22
|
+
title: "Contact Info"
|
23
23
|
payload: "CONTACT_INFO_PAYLOAD"
|
24
24
|
- type: "web_url"
|
25
25
|
title: "Obtenir de l'aide"
|
@@ -15,7 +15,6 @@ module Bobot
|
|
15
15
|
gsub_file 'config/routes.rb', %r{mount Bobot::Engine => \'\/.+\'(, as: \'bot\')?}, ''
|
16
16
|
remove_file 'config/initializers/bobot.rb'
|
17
17
|
remove_file 'app/bobot/workflow.rb'
|
18
|
-
remove_file 'config/bobot.yml'
|
19
18
|
remove_file 'config/locales/bobot.en.yml'
|
20
19
|
remove_file 'config/locales/bobot.fr.yml'
|
21
20
|
display 'Done! Bobot has been uninstalled.'
|
data/spec/bobot/bobot_spec.rb
CHANGED
@@ -7,9 +7,9 @@ RSpec.describe Bobot do
|
|
7
7
|
config.app_id = 'app_id'
|
8
8
|
config.app_secret = 'app_secret'
|
9
9
|
config.verify_token = 'verify_token'
|
10
|
-
config.
|
10
|
+
config.domains = " test.ltd, domain.ltd "
|
11
11
|
config.async = true
|
12
|
-
config.pages << Bobot::
|
12
|
+
config.pages << Bobot::Page.new(
|
13
13
|
slug: 'slug',
|
14
14
|
language: 'language',
|
15
15
|
page_access_token: 'page_access_token',
|
@@ -20,7 +20,7 @@ RSpec.describe Bobot do
|
|
20
20
|
expect(Bobot.config.app_id).to eql('app_id')
|
21
21
|
expect(Bobot.config.app_secret).to eql('app_secret')
|
22
22
|
expect(Bobot.config.verify_token).to eql('verify_token')
|
23
|
-
expect(Bobot.config.
|
23
|
+
expect(Bobot.config.domains).to eql(["test.ltd", "domain.ltd"])
|
24
24
|
expect(Bobot.config.async).to eql(true)
|
25
25
|
expect(Bobot.config.pages[0].slug).to eql('slug')
|
26
26
|
expect(Bobot.config.pages[0].language).to eql('language')
|
@@ -37,7 +37,8 @@ RSpec.describe Bobot::Dummy do
|
|
37
37
|
let(:access_token) { 'access_token' }
|
38
38
|
|
39
39
|
before do
|
40
|
-
Bobot.config.pages << Bobot::
|
40
|
+
Bobot.config.pages << Bobot::Page.new(
|
41
|
+
page_id: payload["recipient"]["id"],
|
41
42
|
page_access_token: access_token,
|
42
43
|
)
|
43
44
|
end
|
@@ -64,14 +65,16 @@ RSpec.describe Bobot::Dummy do
|
|
64
65
|
|
65
66
|
describe '.show_typing' do
|
66
67
|
it 'sends a typing on indicator to the sender' do
|
67
|
-
expect(subject).to receive(:deliver).with(
|
68
|
-
payload_template: { sender_action: 'typing_on' }
|
68
|
+
expect(subject.page).to receive(:deliver).with(
|
69
|
+
payload_template: { sender_action: 'typing_on' },
|
70
|
+
to: payload['recipient']['id'],
|
69
71
|
)
|
70
72
|
subject.show_typing(state: true)
|
71
73
|
end
|
72
74
|
it 'sends a typing on indicator to the sender' do
|
73
|
-
expect(subject).to receive(:deliver).with(
|
74
|
-
payload_template: { sender_action: 'typing_off' }
|
75
|
+
expect(subject.page).to receive(:deliver).with(
|
76
|
+
payload_template: { sender_action: 'typing_off' },
|
77
|
+
to: payload['recipient']['id'],
|
75
78
|
)
|
76
79
|
subject.show_typing(state: false)
|
77
80
|
end
|
@@ -79,8 +82,9 @@ RSpec.describe Bobot::Dummy do
|
|
79
82
|
|
80
83
|
describe '.mark_as_seen' do
|
81
84
|
it 'sends a typing off indicator to the sender' do
|
82
|
-
expect(subject).to receive(:deliver).with(
|
83
|
-
payload_template: { sender_action: 'mark_seen' }
|
85
|
+
expect(subject.page).to receive(:deliver).with(
|
86
|
+
payload_template: { sender_action: 'mark_seen' },
|
87
|
+
to: payload['recipient']['id'],
|
84
88
|
)
|
85
89
|
subject.mark_as_seen
|
86
90
|
end
|
@@ -88,8 +92,9 @@ RSpec.describe Bobot::Dummy do
|
|
88
92
|
|
89
93
|
describe '.reply_with_text' do
|
90
94
|
it 'replies to the sender' do
|
91
|
-
expect(subject).to receive(:deliver).with(
|
92
|
-
payload_template: { message: { text: 'Hello, human' } }
|
95
|
+
expect(subject.page).to receive(:deliver).with(
|
96
|
+
payload_template: { message: { text: 'Hello, human' } },
|
97
|
+
to: payload['recipient']['id'],
|
93
98
|
)
|
94
99
|
subject.reply_with_text(text: 'Hello, human')
|
95
100
|
end
|
@@ -97,7 +102,7 @@ RSpec.describe Bobot::Dummy do
|
|
97
102
|
|
98
103
|
describe '.reply_with_image' do
|
99
104
|
it 'replies to the sender' do
|
100
|
-
expect(subject).to receive(:deliver).with(
|
105
|
+
expect(subject.page).to receive(:deliver).with(
|
101
106
|
payload_template: {
|
102
107
|
message: {
|
103
108
|
attachment: {
|
@@ -109,6 +114,7 @@ RSpec.describe Bobot::Dummy do
|
|
109
114
|
},
|
110
115
|
},
|
111
116
|
},
|
117
|
+
to: payload['recipient']['id'],
|
112
118
|
)
|
113
119
|
subject.reply_with_image(url: 'https://www.foo.bar/image.jpg')
|
114
120
|
end
|
@@ -116,7 +122,7 @@ RSpec.describe Bobot::Dummy do
|
|
116
122
|
|
117
123
|
describe '.reply_with_audio' do
|
118
124
|
it 'replies to the sender' do
|
119
|
-
expect(subject).to receive(:deliver).with(
|
125
|
+
expect(subject.page).to receive(:deliver).with(
|
120
126
|
payload_template: {
|
121
127
|
message: {
|
122
128
|
attachment: {
|
@@ -127,6 +133,7 @@ RSpec.describe Bobot::Dummy do
|
|
127
133
|
},
|
128
134
|
},
|
129
135
|
},
|
136
|
+
to: payload['recipient']['id'],
|
130
137
|
)
|
131
138
|
subject.reply_with_audio(url: 'https://www.foo.bar/audio.mp3')
|
132
139
|
end
|
@@ -134,7 +141,7 @@ RSpec.describe Bobot::Dummy do
|
|
134
141
|
|
135
142
|
describe '.reply_with_video' do
|
136
143
|
it 'replies to the sender' do
|
137
|
-
expect(subject).to receive(:deliver).with(
|
144
|
+
expect(subject.page).to receive(:deliver).with(
|
138
145
|
payload_template: {
|
139
146
|
message: {
|
140
147
|
attachment: {
|
@@ -145,6 +152,7 @@ RSpec.describe Bobot::Dummy do
|
|
145
152
|
},
|
146
153
|
},
|
147
154
|
},
|
155
|
+
to: payload['recipient']['id'],
|
148
156
|
)
|
149
157
|
subject.reply_with_video(url: 'https://www.foo.bar/video.mp4')
|
150
158
|
end
|
@@ -152,7 +160,7 @@ RSpec.describe Bobot::Dummy do
|
|
152
160
|
|
153
161
|
describe '.reply_with_file' do
|
154
162
|
it 'replies to the sender' do
|
155
|
-
expect(subject).to receive(:deliver).with(
|
163
|
+
expect(subject.page).to receive(:deliver).with(
|
156
164
|
payload_template: {
|
157
165
|
message: {
|
158
166
|
attachment: {
|
@@ -163,6 +171,7 @@ RSpec.describe Bobot::Dummy do
|
|
163
171
|
},
|
164
172
|
},
|
165
173
|
},
|
174
|
+
to: payload['recipient']['id'],
|
166
175
|
)
|
167
176
|
subject.reply_with_file(url: 'https://www.foo.bar/file.zip')
|
168
177
|
end
|
@@ -170,7 +179,7 @@ RSpec.describe Bobot::Dummy do
|
|
170
179
|
|
171
180
|
describe '.reply_with_quick_replies' do
|
172
181
|
it 'replies to the sender' do
|
173
|
-
expect(subject).to receive(:deliver).with(
|
182
|
+
expect(subject.page).to receive(:deliver).with(
|
174
183
|
payload_template: {
|
175
184
|
message: {
|
176
185
|
text: 'Pick a color:',
|
@@ -189,6 +198,7 @@ RSpec.describe Bobot::Dummy do
|
|
189
198
|
]
|
190
199
|
},
|
191
200
|
},
|
201
|
+
to: payload['recipient']['id'],
|
192
202
|
)
|
193
203
|
subject.reply_with_quick_replies(
|
194
204
|
text: 'Pick a color:',
|
@@ -208,7 +218,7 @@ RSpec.describe Bobot::Dummy do
|
|
208
218
|
)
|
209
219
|
end
|
210
220
|
it 'asks the location to the sender' do
|
211
|
-
expect(subject).to receive(:deliver).with(
|
221
|
+
expect(subject.page).to receive(:deliver).with(
|
212
222
|
payload_template: {
|
213
223
|
message: {
|
214
224
|
text: 'Where are you',
|
@@ -220,6 +230,7 @@ RSpec.describe Bobot::Dummy do
|
|
220
230
|
]
|
221
231
|
},
|
222
232
|
},
|
233
|
+
to: payload['recipient']['id'],
|
223
234
|
)
|
224
235
|
subject.reply_with_quick_replies(
|
225
236
|
text: 'Where are you',
|
@@ -232,7 +243,7 @@ RSpec.describe Bobot::Dummy do
|
|
232
243
|
|
233
244
|
describe '.reply_with_buttons' do
|
234
245
|
it 'replies to the sender' do
|
235
|
-
expect(subject).to receive(:deliver).with(
|
246
|
+
expect(subject.page).to receive(:deliver).with(
|
236
247
|
payload_template: {
|
237
248
|
message: {
|
238
249
|
attachment: {
|
@@ -248,6 +259,7 @@ RSpec.describe Bobot::Dummy do
|
|
248
259
|
}
|
249
260
|
},
|
250
261
|
},
|
262
|
+
to: payload['recipient']['id'],
|
251
263
|
)
|
252
264
|
subject.reply_with_buttons(
|
253
265
|
text: 'Human, do you like me?',
|
@@ -0,0 +1,61 @@
|
|
1
|
+
require 'rails_helper'
|
2
|
+
|
3
|
+
RSpec.describe Bobot::Page do
|
4
|
+
before do
|
5
|
+
Bobot.configure do |config|
|
6
|
+
config.pages << Bobot::Page.new(
|
7
|
+
slug: 'slug_1',
|
8
|
+
language: 'language',
|
9
|
+
page_access_token: 'page_access_token',
|
10
|
+
page_id: '123',
|
11
|
+
get_started_payload: 'get_started_payload',
|
12
|
+
)
|
13
|
+
config.pages << Bobot::Page.new(
|
14
|
+
slug: 'slug_2',
|
15
|
+
language: 'language',
|
16
|
+
page_access_token: 'page_access_token',
|
17
|
+
page_id: '456',
|
18
|
+
get_started_payload: 'get_started_payload',
|
19
|
+
)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
describe '#find' do
|
24
|
+
it 'find page in the config' do
|
25
|
+
expect(Bobot::Page.find("123").page_id).to eq("123")
|
26
|
+
expect(Bobot::Page.find(123).page_id).to eq("123")
|
27
|
+
expect(Bobot::Page.find("456").page_id).to eq("456")
|
28
|
+
expect(Bobot::Page.find(456).page_id).to eq("456")
|
29
|
+
end
|
30
|
+
it 'not find page in the config' do
|
31
|
+
expect(Bobot::Page.find("1664")).to eq(nil)
|
32
|
+
expect(Bobot::Page.find(1664)).to eq(nil)
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
describe '#find_by_slug' do
|
37
|
+
it 'find page in the config' do
|
38
|
+
expect(Bobot::Page.find_by_slug("slug_1").slug).to eq("slug_1")
|
39
|
+
expect(Bobot::Page.find_by_slug("slug_2").slug).to eq("slug_2")
|
40
|
+
end
|
41
|
+
it 'not find page in the config' do
|
42
|
+
expect(Bobot::Page.find_by_slug("slug_unknown")).to eq(nil)
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
describe '#[]' do
|
47
|
+
it 'find page in the config' do
|
48
|
+
expect(Bobot::Page["123"].page_id).to eq("123")
|
49
|
+
expect(Bobot::Page[123].page_id).to eq("123")
|
50
|
+
expect(Bobot::Page["456"].page_id).to eq("456")
|
51
|
+
expect(Bobot::Page[456].page_id).to eq("456")
|
52
|
+
expect(Bobot::Page["slug_1"].slug).to eq("slug_1")
|
53
|
+
expect(Bobot::Page["slug_2"].slug).to eq("slug_2")
|
54
|
+
end
|
55
|
+
it 'not find page in the config' do
|
56
|
+
expect(Bobot::Page["1664"]).to eq(nil)
|
57
|
+
expect(Bobot::Page[1664]).to eq(nil)
|
58
|
+
expect(Bobot::Page["slug_unknown"]).to eq(nil)
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
data/spec/bobot/profile_spec.rb
CHANGED
data/spec/bobot/user_spec.rb
CHANGED
@@ -0,0 +1,45 @@
|
|
1
|
+
Started GET "/" for 127.0.0.1 at 2017-11-24 11:59:04 +0100
|
2
|
+
Processing by Rails::WelcomeController#index as HTML
|
3
|
+
Rendering /Users/navid/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/railties-5.1.4/lib/rails/templates/rails/welcome/index.html.erb
|
4
|
+
Rendered /Users/navid/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/railties-5.1.4/lib/rails/templates/rails/welcome/index.html.erb (4.7ms)
|
5
|
+
Completed 200 OK in 15ms (Views: 12.0ms)
|
6
|
+
|
7
|
+
|
8
|
+
Started GET "/favicon.ico" for 127.0.0.1 at 2017-11-24 11:59:04 +0100
|
9
|
+
|
10
|
+
ActionController::RoutingError (No route matches [GET] "/favicon.ico"):
|
11
|
+
|
12
|
+
actionpack (5.1.4) lib/action_dispatch/middleware/debug_exceptions.rb:63:in `call'
|
13
|
+
actionpack (5.1.4) lib/action_dispatch/middleware/show_exceptions.rb:31:in `call'
|
14
|
+
railties (5.1.4) lib/rails/rack/logger.rb:36:in `call_app'
|
15
|
+
railties (5.1.4) lib/rails/rack/logger.rb:24:in `block in call'
|
16
|
+
activesupport (5.1.4) lib/active_support/tagged_logging.rb:69:in `block in tagged'
|
17
|
+
activesupport (5.1.4) lib/active_support/tagged_logging.rb:26:in `tagged'
|
18
|
+
activesupport (5.1.4) lib/active_support/tagged_logging.rb:69:in `tagged'
|
19
|
+
railties (5.1.4) lib/rails/rack/logger.rb:24:in `call'
|
20
|
+
actionpack (5.1.4) lib/action_dispatch/middleware/remote_ip.rb:79:in `call'
|
21
|
+
actionpack (5.1.4) lib/action_dispatch/middleware/request_id.rb:25:in `call'
|
22
|
+
rack (2.0.3) lib/rack/runtime.rb:22:in `call'
|
23
|
+
activesupport (5.1.4) lib/active_support/cache/strategy/local_cache_middleware.rb:27:in `call'
|
24
|
+
actionpack (5.1.4) lib/action_dispatch/middleware/executor.rb:12:in `call'
|
25
|
+
actionpack (5.1.4) lib/action_dispatch/middleware/static.rb:125:in `call'
|
26
|
+
rack (2.0.3) lib/rack/sendfile.rb:111:in `call'
|
27
|
+
railties (5.1.4) lib/rails/engine.rb:522:in `call'
|
28
|
+
rack (2.0.3) lib/rack/handler/webrick.rb:86:in `service'
|
29
|
+
/Users/navid/.rbenv/versions/2.3.1/lib/ruby/2.3.0/webrick/httpserver.rb:140:in `service'
|
30
|
+
/Users/navid/.rbenv/versions/2.3.1/lib/ruby/2.3.0/webrick/httpserver.rb:96:in `run'
|
31
|
+
/Users/navid/.rbenv/versions/2.3.1/lib/ruby/2.3.0/webrick/server.rb:296:in `block in start_thread'
|
32
|
+
Started GET "/" for 127.0.0.1 at 2017-11-24 12:00:32 +0100
|
33
|
+
Processing by Rails::WelcomeController#index as HTML
|
34
|
+
Rendering /Users/navid/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/railties-5.1.4/lib/rails/templates/rails/welcome/index.html.erb
|
35
|
+
Rendered /Users/navid/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/railties-5.1.4/lib/rails/templates/rails/welcome/index.html.erb (4.7ms)
|
36
|
+
Completed 200 OK in 13ms (Views: 10.1ms)
|
37
|
+
|
38
|
+
|
39
|
+
Started GET "/" for 127.0.0.1 at 2017-11-24 12:00:33 +0100
|
40
|
+
Processing by Rails::WelcomeController#index as HTML
|
41
|
+
Rendering /Users/navid/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/railties-5.1.4/lib/rails/templates/rails/welcome/index.html.erb
|
42
|
+
Rendered /Users/navid/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/railties-5.1.4/lib/rails/templates/rails/welcome/index.html.erb (3.5ms)
|
43
|
+
Completed 200 OK in 8ms (Views: 5.7ms)
|
44
|
+
|
45
|
+
|
data/spec/dummy/log/test.log
CHANGED
@@ -2,3 +2,27 @@
|
|
2
2
|
[ActiveJob] Enqueued Bobot::CommanderJob (Job ID: e295aa69-c9c8-4900-8409-e43a19b6a500) to Test(default) with arguments: {"sender"=>{"id"=>"2"}, "recipient"=>{"id"=>"3"}, "timestamp"=>1457764197627, "message"=>{"mid"=>"mid.1457764197618:41d102a3e1ae206a38", "seq"=>73, "text"=>"Hello, bot!"}}
|
3
3
|
[ActiveJob] Enqueued Bobot::CommanderJob (Job ID: 733fbfda-cfcb-4da4-8a4d-5dcd99bf7ad0) to Test(default) with arguments: {"sender"=>{"id"=>"2"}, "recipient"=>{"id"=>"3"}, "timestamp"=>1457764197627, "message"=>{"mid"=>"mid.1457764197618:41d102a3e1ae206a38", "seq"=>73, "text"=>"Hello, bot!"}}
|
4
4
|
[ActiveJob] Enqueued Bobot::CommanderJob (Job ID: abbfb628-82bd-4d48-a102-8720e8fbed91) to Test(default) with arguments: {"sender"=>{"id"=>"2"}, "recipient"=>{"id"=>"3"}, "timestamp"=>1457764197627, "message"=>{"mid"=>"mid.1457764197618:41d102a3e1ae206a38", "seq"=>73, "text"=>"Hello, bot!"}}
|
5
|
+
[ActiveJob] Enqueued Bobot::CommanderJob (Job ID: 7e146540-8a7e-4822-8d43-ac07d533e5a9) to Test(default) with arguments: {"sender"=>{"id"=>"2"}, "recipient"=>{"id"=>"3"}, "timestamp"=>1457764197627, "message"=>{"mid"=>"mid.1457764197618:41d102a3e1ae206a38", "seq"=>73, "text"=>"Hello, bot!"}}
|
6
|
+
[ActiveJob] Enqueued Bobot::CommanderJob (Job ID: bb8a0a3f-490a-4427-be91-0c005255d863) to Test(default) with arguments: {"sender"=>{"id"=>"2"}, "recipient"=>{"id"=>"3"}, "timestamp"=>1457764197627, "message"=>{"mid"=>"mid.1457764197618:41d102a3e1ae206a38", "seq"=>73, "text"=>"Hello, bot!"}}
|
7
|
+
[ActiveJob] Enqueued Bobot::CommanderJob (Job ID: e6ad52a0-39eb-47cc-9fad-3177e6f08833) to Test(default) with arguments: {"sender"=>{"id"=>"2"}, "recipient"=>{"id"=>"3"}, "timestamp"=>1457764197627, "message"=>{"mid"=>"mid.1457764197618:41d102a3e1ae206a38", "seq"=>73, "text"=>"Hello, bot!"}}
|
8
|
+
[ActiveJob] Enqueued Bobot::CommanderJob (Job ID: 45596508-c8d8-4181-97c7-b8466c788043) to Test(default) with arguments: {"sender"=>{"id"=>"2"}, "recipient"=>{"id"=>"3"}, "timestamp"=>1457764197627, "message"=>{"mid"=>"mid.1457764197618:41d102a3e1ae206a38", "seq"=>73, "text"=>"Hello, bot!"}}
|
9
|
+
[ActiveJob] Enqueued Bobot::CommanderJob (Job ID: f47b59b3-4367-4166-b743-2aa15a158ec1) to Test(default) with arguments: {"sender"=>{"id"=>"2"}, "recipient"=>{"id"=>"3"}, "timestamp"=>1457764197627, "message"=>{"mid"=>"mid.1457764197618:41d102a3e1ae206a38", "seq"=>73, "text"=>"Hello, bot!"}}
|
10
|
+
[ActiveJob] Enqueued Bobot::CommanderJob (Job ID: 1bb7fe50-e654-4b7c-aeaa-f4065e9a2cd7) to Test(default) with arguments: {"sender"=>{"id"=>"2"}, "recipient"=>{"id"=>"3"}, "timestamp"=>1457764197627, "message"=>{"mid"=>"mid.1457764197618:41d102a3e1ae206a38", "seq"=>73, "text"=>"Hello, bot!"}}
|
11
|
+
[ActiveJob] Enqueued Bobot::CommanderJob (Job ID: f44a9cce-d7eb-4673-86c1-1314c6779dfe) to Test(default) with arguments: {"sender"=>{"id"=>"2"}, "recipient"=>{"id"=>"3"}, "timestamp"=>1457764197627, "message"=>{"mid"=>"mid.1457764197618:41d102a3e1ae206a38", "seq"=>73, "text"=>"Hello, bot!"}}
|
12
|
+
[ActiveJob] Enqueued Bobot::CommanderJob (Job ID: c90b3096-6f7f-4bc8-9002-19106f3b4df5) to Test(default) with arguments: {"sender"=>{"id"=>"2"}, "recipient"=>{"id"=>"3"}, "timestamp"=>1457764197627, "message"=>{"mid"=>"mid.1457764197618:41d102a3e1ae206a38", "seq"=>73, "text"=>"Hello, bot!"}}
|
13
|
+
[ActiveJob] Enqueued Bobot::CommanderJob (Job ID: 974e35d5-7956-453d-9872-d932a4efadfa) to Test(default) with arguments: {"sender"=>{"id"=>"2"}, "recipient"=>{"id"=>"3"}, "timestamp"=>1457764197627, "message"=>{"mid"=>"mid.1457764197618:41d102a3e1ae206a38", "seq"=>73, "text"=>"Hello, bot!"}}
|
14
|
+
[ActiveJob] Enqueued Bobot::CommanderJob (Job ID: d04a2166-9022-438f-b0b6-ecfb156421e0) to Test(default) with arguments: {"sender"=>{"id"=>"2"}, "recipient"=>{"id"=>"3"}, "timestamp"=>1457764197627, "message"=>{"mid"=>"mid.1457764197618:41d102a3e1ae206a38", "seq"=>73, "text"=>"Hello, bot!"}}
|
15
|
+
[ActiveJob] Enqueued Bobot::CommanderJob (Job ID: b82a84cf-78a0-4002-8653-997b81ae9eae) to Test(default) with arguments: {"sender"=>{"id"=>"2"}, "recipient"=>{"id"=>"3"}, "timestamp"=>1457764197627, "message"=>{"mid"=>"mid.1457764197618:41d102a3e1ae206a38", "seq"=>73, "text"=>"Hello, bot!"}}
|
16
|
+
[ActiveJob] Enqueued Bobot::CommanderJob (Job ID: 8112f073-6061-428b-9a45-bb6c95b78e03) to Test(default) with arguments: {"sender"=>{"id"=>"2"}, "recipient"=>{"id"=>"3"}, "timestamp"=>1457764197627, "message"=>{"mid"=>"mid.1457764197618:41d102a3e1ae206a38", "seq"=>73, "text"=>"Hello, bot!"}}
|
17
|
+
[ActiveJob] Enqueued Bobot::CommanderJob (Job ID: 2140517c-8166-4449-96a0-8c1075712bd1) to Test(default) with arguments: {"sender"=>{"id"=>"2"}, "recipient"=>{"id"=>"3"}, "timestamp"=>1457764197627, "message"=>{"mid"=>"mid.1457764197618:41d102a3e1ae206a38", "seq"=>73, "text"=>"Hello, bot!"}}
|
18
|
+
[ActiveJob] Enqueued Bobot::CommanderJob (Job ID: 838d432d-13e4-4449-916c-6bd78c2b19b6) to Test(default) with arguments: {"sender"=>{"id"=>"2"}, "recipient"=>{"id"=>"3"}, "timestamp"=>1457764197627, "message"=>{"mid"=>"mid.1457764197618:41d102a3e1ae206a38", "seq"=>73, "text"=>"Hello, bot!"}}
|
19
|
+
[ActiveJob] Enqueued Bobot::CommanderJob (Job ID: 91632611-04b4-4939-bfec-226ed9d46b35) to Test(default) with arguments: {"sender"=>{"id"=>"2"}, "recipient"=>{"id"=>"3"}, "timestamp"=>1457764197627, "message"=>{"mid"=>"mid.1457764197618:41d102a3e1ae206a38", "seq"=>73, "text"=>"Hello, bot!"}}
|
20
|
+
[ActiveJob] Enqueued Bobot::CommanderJob (Job ID: bba22f37-1aca-477b-b7b3-bbaa2886be74) to Test(default) with arguments: {"sender"=>{"id"=>"2"}, "recipient"=>{"id"=>"3"}, "timestamp"=>1457764197627, "message"=>{"mid"=>"mid.1457764197618:41d102a3e1ae206a38", "seq"=>73, "text"=>"Hello, bot!"}}
|
21
|
+
[ActiveJob] Enqueued Bobot::CommanderJob (Job ID: b5aa5a5f-acbe-4cdc-a420-754b65fa0514) to Test(default) with arguments: {"sender"=>{"id"=>"2"}, "recipient"=>{"id"=>"3"}, "timestamp"=>1457764197627, "message"=>{"mid"=>"mid.1457764197618:41d102a3e1ae206a38", "seq"=>73, "text"=>"Hello, bot!"}}
|
22
|
+
[ActiveJob] Enqueued Bobot::CommanderJob (Job ID: 9dee2915-2aa3-49c0-a163-0fb1babce1ae) to Test(default) with arguments: {"sender"=>{"id"=>"2"}, "recipient"=>{"id"=>"3"}, "timestamp"=>1457764197627, "message"=>{"mid"=>"mid.1457764197618:41d102a3e1ae206a38", "seq"=>73, "text"=>"Hello, bot!"}}
|
23
|
+
[ActiveJob] Enqueued Bobot::CommanderJob (Job ID: 031757ed-ca82-4581-869c-810c286de6f0) to Test(default) with arguments: {"sender"=>{"id"=>"2"}, "recipient"=>{"id"=>"3"}, "timestamp"=>1457764197627, "message"=>{"mid"=>"mid.1457764197618:41d102a3e1ae206a38", "seq"=>73, "text"=>"Hello, bot!"}}
|
24
|
+
[ActiveJob] Enqueued Bobot::CommanderJob (Job ID: 1c0de02e-7761-480b-a8ac-87d1613a948b) to Test(default) with arguments: {"sender"=>{"id"=>"2"}, "recipient"=>{"id"=>"3"}, "timestamp"=>1457764197627, "message"=>{"mid"=>"mid.1457764197618:41d102a3e1ae206a38", "seq"=>73, "text"=>"Hello, bot!"}}
|
25
|
+
[ActiveJob] Enqueued Bobot::CommanderJob (Job ID: ce0ebceb-aeea-44d1-b425-7cb3e627c9eb) to Test(default) with arguments: {"sender"=>{"id"=>"2"}, "recipient"=>{"id"=>"3"}, "timestamp"=>1457764197627, "message"=>{"mid"=>"mid.1457764197618:41d102a3e1ae206a38", "seq"=>73, "text"=>"Hello, bot!"}}
|
26
|
+
[ActiveJob] Enqueued Bobot::CommanderJob (Job ID: e1b4f1e1-13d8-4243-948c-c2bbdab9f212) to Test(default) with arguments: {"sender"=>{"id"=>"2"}, "recipient"=>{"id"=>"3"}, "timestamp"=>1457764197627, "message"=>{"mid"=>"mid.1457764197618:41d102a3e1ae206a38", "seq"=>73, "text"=>"Hello, bot!"}}
|
27
|
+
[ActiveJob] Enqueued Bobot::CommanderJob (Job ID: 1c5e3b4b-4ae4-4213-bafb-4164a16a0a4c) to Test(default) with arguments: {"sender"=>{"id"=>"2"}, "recipient"=>{"id"=>"3"}, "timestamp"=>1457764197627, "message"=>{"mid"=>"mid.1457764197618:41d102a3e1ae206a38", "seq"=>73, "text"=>"Hello, bot!"}}
|
28
|
+
[ActiveJob] Enqueued Bobot::CommanderJob (Job ID: 56732598-6966-4ce2-b00c-0b7632f4a14b) to Test(default) with arguments: {"sender"=>{"id"=>"2"}, "recipient"=>{"id"=>"3"}, "timestamp"=>1457764197627, "message"=>{"mid"=>"mid.1457764197618:41d102a3e1ae206a38", "seq"=>73, "text"=>"Hello, bot!"}}
|