wechat 0.7.15 → 0.7.16
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +6 -0
- data/README-CN.md +21 -11
- data/README.md +17 -7
- data/bin/wechat +56 -38
- data/lib/wechat/api.rb +28 -0
- data/lib/wechat/controller_api.rb +3 -1
- data/lib/wechat/http_client.rb +1 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 23916edc0bd81f54751cecf9e3936e7c9c0e3d66
|
4
|
+
data.tar.gz: 7948b1899e0926c4f7c7c1da2e18b3b7ea63e52e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 529950c0422c7ec2e9c20ee8de79bf879528e94d47a61074f2d82bf05ead6305137824304ad38c334bd79bbae9b05ec9f7e0fdca7535b82ebec97502dd6369f9
|
7
|
+
data.tar.gz: 999bda64d6631f8f221d3b4d5e1a6e625bbb3e23adaffe4037856dfce0bc774709731a6289c50e5d307e9c1d8240bc8e2b2974ada59a70687fe09bf9ea572794
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,11 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
+
## v0.7.16 (released at 7/27/2016)
|
4
|
+
|
5
|
+
* FIX: consider '' in params as equal with nil, in ControllerApi#wechat_public_oauth2, by @snow #135
|
6
|
+
* New tag API for public account, by @pynixwang #127
|
7
|
+
* fix SSLv3 error by use TLSv1_client, by @IvanChou #133
|
8
|
+
|
3
9
|
## v0.7.15 (released at 7/03/2016)
|
4
10
|
|
5
11
|
* RSpec testing case on Rails 5 now.
|
data/README-CN.md
CHANGED
@@ -23,25 +23,25 @@ WeChat gem 可以帮助开发者方便地在Rails环境中集成微信[公众平
|
|
23
23
|
|
24
24
|
## 安装
|
25
25
|
|
26
|
-
|
26
|
+
使用 `gem install`
|
27
27
|
|
28
28
|
```
|
29
29
|
gem install "wechat"
|
30
30
|
```
|
31
31
|
|
32
|
-
|
32
|
+
或者添加下面这行到 `Gemfile`:
|
33
33
|
|
34
34
|
```
|
35
35
|
gem 'wechat'
|
36
36
|
```
|
37
37
|
|
38
|
-
|
38
|
+
运行下面这行代码来安装:
|
39
39
|
|
40
40
|
```console
|
41
41
|
bundle install
|
42
42
|
```
|
43
43
|
|
44
|
-
|
44
|
+
运行下面这行代码来生成必要文件:
|
45
45
|
|
46
46
|
```console
|
47
47
|
rails generate wechat:install
|
@@ -266,7 +266,7 @@ Wechat commands:
|
|
266
266
|
wechat custom_text [OPENID, TEXT_MESSAGE] # 发送文字客服消息
|
267
267
|
wechat custom_video [OPENID, VIDEO_PATH] # 发送视频客服消息
|
268
268
|
wechat custom_voice [OPENID, VOICE_PATH] # 发送语音客服消息
|
269
|
-
wechat customservice_getonlinekflist # 获取在线客服接待信息
|
269
|
+
wechat customservice_getonlinekflist # 获取在线客服接待信息
|
270
270
|
wechat group_create [GROUP_NAME] # 创建分组
|
271
271
|
wechat group_delete [GROUP_ID] # 删除分组
|
272
272
|
wechat group_update [GROUP_ID, NEW_GROUP_NAME] # 修改分组名
|
@@ -280,18 +280,25 @@ Wechat commands:
|
|
280
280
|
wechat media_create [MEDIA_TYPE, PATH] # 媒体上传
|
281
281
|
wechat media_uploadimg [IMAGE_PATH] # 上传图文消息内的图片
|
282
282
|
wechat menu # 当前菜单
|
283
|
-
wechat menu_addconditional [CONDITIONAL_MENU_YAML_PATH] # 创建个性化菜单
|
283
|
+
wechat menu_addconditional [CONDITIONAL_MENU_YAML_PATH] # 创建个性化菜单
|
284
284
|
wechat menu_create [MENU_YAML_PATH] # 创建菜单
|
285
|
-
wechat menu_delconditional [MENU_ID] # 删除个性化菜单
|
285
|
+
wechat menu_delconditional [MENU_ID] # 删除个性化菜单
|
286
286
|
wechat menu_delete # 删除菜单
|
287
|
-
wechat menu_trymatch [USER_ID] # 测试个性化菜单匹配结果
|
287
|
+
wechat menu_trymatch [USER_ID] # 测试个性化菜单匹配结果
|
288
288
|
wechat qrcode_create_limit_scene [SCENE_ID_OR_STR] # 请求永久二维码
|
289
289
|
wechat qrcode_create_scene [SCENE_ID, EXPIRE_SECONDS] # 请求临时二维码
|
290
290
|
wechat qrcode_download [TICKET, QR_CODE_PIC_PATH] # 通过ticket下载二维码
|
291
291
|
wechat short_url [LONG_URL] # 长链接转短链接
|
292
|
+
wechat tag [TAGID] # 获取标签下粉丝列表
|
293
|
+
wechat tag_add_user [TAG_ID, OPEN_IDS] # 批量为用户打标签
|
294
|
+
wechat tag_create [TAGNAME, TAG_ID] # 创建标签
|
295
|
+
wechat tag_del_user [TAG_ID, OPEN_IDS] # 批量为用户取消标签
|
296
|
+
wechat tag_delete [TAG_ID] # 删除标签
|
297
|
+
wechat tag_update [TAG_ID, TAGNAME] # 更新标签名字
|
298
|
+
wechat tags # 获取所有标签
|
292
299
|
wechat template_message [OPENID, TEMPLATE_YAML_PATH] # 模板消息接口
|
293
300
|
wechat user [OPEN_ID] # 获取用户基本信息
|
294
|
-
wechat user_batchget [OPEN_ID_LIST] # 批量获取用户基本信息
|
301
|
+
wechat user_batchget [OPEN_ID_LIST] # 批量获取用户基本信息
|
295
302
|
wechat user_change_group [OPEN_ID, TO_GROUP_ID] # 移动用户分组
|
296
303
|
wechat user_group [OPEN_ID] # 查询用户所在分组
|
297
304
|
wechat user_update_remark [OPEN_ID, REMARK] # 设置备注名
|
@@ -330,9 +337,12 @@ Wechat commands:
|
|
330
337
|
wechat media_create [MEDIA_TYPE, PATH] # 媒体上传
|
331
338
|
wechat media_uploadimg [IMAGE_PATH] # 上传图文消息内的图片
|
332
339
|
wechat menu # 当前菜单
|
340
|
+
wechat menu_addconditional [CONDITIONAL_MENU_YAML_PATH] # 创建个性化菜单
|
333
341
|
wechat menu_create [MENU_YAML_PATH] # 创建菜单
|
342
|
+
wechat menu_delconditional [MENU_ID] # 删除个性化菜单
|
334
343
|
wechat menu_delete # 删除菜单
|
335
|
-
wechat
|
344
|
+
wechat menu_trymatch [USER_ID] # 测试个性化菜单匹配结果
|
345
|
+
wechat message_send [OPENID, TEXT_MESSAGE] # 发送文字消息
|
336
346
|
wechat qrcode_download [TICKET, QR_CODE_PIC_PATH] # 通过ticket下载二维码
|
337
347
|
wechat tag [TAG_ID] # 获取标签成员
|
338
348
|
wechat tag_add_department [TAG_ID, PARTY_IDS] # 增加标签部门
|
@@ -342,7 +352,7 @@ Wechat commands:
|
|
342
352
|
wechat tag_del_user [TAG_ID, USER_IDS] # 删除标签成员
|
343
353
|
wechat tag_delete [TAG_ID] # 删除标签
|
344
354
|
wechat tag_update [TAG_ID, TAGNAME] # 更新标签名字
|
345
|
-
wechat tags #
|
355
|
+
wechat tags # 获取所有标签
|
346
356
|
wechat template_message [OPENID, TEMPLATE_YAML_PATH] # 模板消息接口
|
347
357
|
wechat upload_replaceparty [BATCH_PARTY_CSV_PATH] # 上传文件方式全量覆盖部门
|
348
358
|
wechat upload_replaceuser [BATCH_USER_CSV_PATH] # 上传文件方式全量覆盖成员
|
data/README.md
CHANGED
@@ -282,7 +282,7 @@ Wechat commands:
|
|
282
282
|
wechat custom_text [OPENID, TEXT_MESSAGE] # 发送文字客服消息
|
283
283
|
wechat custom_video [OPENID, VIDEO_PATH] # 发送视频客服消息
|
284
284
|
wechat custom_voice [OPENID, VOICE_PATH] # 发送语音客服消息
|
285
|
-
wechat customservice_getonlinekflist # 获取在线客服接待信息
|
285
|
+
wechat customservice_getonlinekflist # 获取在线客服接待信息
|
286
286
|
wechat group_create [GROUP_NAME] # 创建分组
|
287
287
|
wechat group_delete [GROUP_ID] # 删除分组
|
288
288
|
wechat group_update [GROUP_ID, NEW_GROUP_NAME] # 修改分组名
|
@@ -296,18 +296,25 @@ Wechat commands:
|
|
296
296
|
wechat media_create [MEDIA_TYPE, PATH] # 媒体上传
|
297
297
|
wechat media_uploadimg [IMAGE_PATH] # 上传图文消息内的图片
|
298
298
|
wechat menu # 当前菜单
|
299
|
-
wechat menu_addconditional [CONDITIONAL_MENU_YAML_PATH] # 创建个性化菜单
|
299
|
+
wechat menu_addconditional [CONDITIONAL_MENU_YAML_PATH] # 创建个性化菜单
|
300
300
|
wechat menu_create [MENU_YAML_PATH] # 创建菜单
|
301
|
-
wechat menu_delconditional [MENU_ID] # 删除个性化菜单
|
301
|
+
wechat menu_delconditional [MENU_ID] # 删除个性化菜单
|
302
302
|
wechat menu_delete # 删除菜单
|
303
|
-
wechat menu_trymatch [USER_ID] # 测试个性化菜单匹配结果
|
303
|
+
wechat menu_trymatch [USER_ID] # 测试个性化菜单匹配结果
|
304
304
|
wechat qrcode_create_limit_scene [SCENE_ID_OR_STR] # 请求永久二维码
|
305
305
|
wechat qrcode_create_scene [SCENE_ID, EXPIRE_SECONDS] # 请求临时二维码
|
306
306
|
wechat qrcode_download [TICKET, QR_CODE_PIC_PATH] # 通过ticket下载二维码
|
307
307
|
wechat short_url [LONG_URL] # 长链接转短链接
|
308
|
+
wechat tag [TAGID] # 获取标签下粉丝列表
|
309
|
+
wechat tag_add_user [TAG_ID, OPEN_IDS] # 批量为用户打标签
|
310
|
+
wechat tag_create [TAGNAME, TAG_ID] # 创建标签
|
311
|
+
wechat tag_del_user [TAG_ID, OPEN_IDS] # 批量为用户取消标签
|
312
|
+
wechat tag_delete [TAG_ID] # 删除标签
|
313
|
+
wechat tag_update [TAG_ID, TAGNAME] # 更新标签名字
|
314
|
+
wechat tags # 获取所有标签
|
308
315
|
wechat template_message [OPENID, TEMPLATE_YAML_PATH] # 模板消息接口
|
309
316
|
wechat user [OPEN_ID] # 获取用户基本信息
|
310
|
-
wechat user_batchget [OPEN_ID_LIST] # 批量获取用户基本信息
|
317
|
+
wechat user_batchget [OPEN_ID_LIST] # 批量获取用户基本信息
|
311
318
|
wechat user_change_group [OPEN_ID, TO_GROUP_ID] # 移动用户分组
|
312
319
|
wechat user_group [OPEN_ID] # 查询用户所在分组
|
313
320
|
wechat user_update_remark [OPEN_ID, REMARK] # 设置备注名
|
@@ -346,9 +353,12 @@ Wechat commands:
|
|
346
353
|
wechat media_create [MEDIA_TYPE, PATH] # 媒体上传
|
347
354
|
wechat media_uploadimg [IMAGE_PATH] # 上传图文消息内的图片
|
348
355
|
wechat menu # 当前菜单
|
356
|
+
wechat menu_addconditional [CONDITIONAL_MENU_YAML_PATH] # 创建个性化菜单
|
349
357
|
wechat menu_create [MENU_YAML_PATH] # 创建菜单
|
358
|
+
wechat menu_delconditional [MENU_ID] # 删除个性化菜单
|
350
359
|
wechat menu_delete # 删除菜单
|
351
|
-
wechat
|
360
|
+
wechat menu_trymatch [USER_ID] # 测试个性化菜单匹配结果
|
361
|
+
wechat message_send [OPENID, TEXT_MESSAGE] # 发送文字消息
|
352
362
|
wechat qrcode_download [TICKET, QR_CODE_PIC_PATH] # 通过ticket下载二维码
|
353
363
|
wechat tag [TAG_ID] # 获取标签成员
|
354
364
|
wechat tag_add_department [TAG_ID, PARTY_IDS] # 增加标签部门
|
@@ -358,7 +368,7 @@ Wechat commands:
|
|
358
368
|
wechat tag_del_user [TAG_ID, USER_IDS] # 删除标签成员
|
359
369
|
wechat tag_delete [TAG_ID] # 删除标签
|
360
370
|
wechat tag_update [TAG_ID, TAGNAME] # 更新标签名字
|
361
|
-
wechat tags #
|
371
|
+
wechat tags # 获取所有标签
|
362
372
|
wechat template_message [OPENID, TEMPLATE_YAML_PATH] # 模板消息接口
|
363
373
|
wechat upload_replaceparty [BATCH_PARTY_CSV_PATH] # 上传文件方式全量覆盖部门
|
364
374
|
wechat upload_replaceuser [BATCH_USER_CSV_PATH] # 上传文件方式全量覆盖成员
|
data/bin/wechat
CHANGED
@@ -38,7 +38,9 @@ class App < Thor
|
|
38
38
|
puts 'File downloaded'
|
39
39
|
end
|
40
40
|
|
41
|
-
|
41
|
+
in_corp_api_cmd = Wechat::ApiLoader.with(options).is_a?(Wechat::CorpApi)
|
42
|
+
|
43
|
+
if in_corp_api_cmd
|
42
44
|
desc 'department_create [NAME, PARENT_ID]', '创建部门'
|
43
45
|
method_option :parentid, aliases: '-p', desc: '父亲部门id。根部门id为1'
|
44
46
|
def department_create(name)
|
@@ -114,53 +116,16 @@ class App < Thor
|
|
114
116
|
puts wechat_api.invite_user(userid)
|
115
117
|
end
|
116
118
|
|
117
|
-
desc 'tag_create [TAGNAME, TAG_ID]', '创建标签'
|
118
|
-
method_option :tagid, aliases: '-id', desc: '整型,指定此参数时新增的标签会生成对应的标签id,不指定时则以目前最大的id自增'
|
119
|
-
def tag_create(name)
|
120
|
-
api_opts = options.slice(:tagid)
|
121
|
-
puts wechat_api.tag_create(name, api_opts[:tagid])
|
122
|
-
end
|
123
|
-
|
124
|
-
desc 'tag_update [TAG_ID, TAGNAME]', '更新标签名字'
|
125
|
-
def tag_update(tagid, tagname)
|
126
|
-
puts wechat_api.tag_update(tagid, tagname)
|
127
|
-
end
|
128
|
-
|
129
|
-
desc 'tag_delete [TAG_ID]', '删除标签'
|
130
|
-
def tag_delete(tagid)
|
131
|
-
puts wechat_api.tag_delete(tagid)
|
132
|
-
end
|
133
|
-
|
134
|
-
desc 'tag [TAG_ID]', '获取标签成员'
|
135
|
-
def tag(tagid)
|
136
|
-
puts wechat_api.tag(tagid)
|
137
|
-
end
|
138
|
-
|
139
|
-
desc 'tag_add_user [TAG_ID, USER_IDS]', '增加标签成员'
|
140
|
-
def tag_add_user(tagid, userids)
|
141
|
-
puts wechat_api.tag_add_user(tagid, userids.split(','))
|
142
|
-
end
|
143
|
-
|
144
119
|
desc 'tag_add_department [TAG_ID, PARTY_IDS]', '增加标签部门'
|
145
120
|
def tag_add_department(tagid, partyids)
|
146
121
|
puts wechat_api.tag_add_user(tagid, nil, partyids.split(','))
|
147
122
|
end
|
148
123
|
|
149
|
-
desc 'tag_del_user [TAG_ID, USER_IDS]', '删除标签成员'
|
150
|
-
def tag_del_user(tagid, userids)
|
151
|
-
puts wechat_api.tag_del_user(tagid, userids.split(','))
|
152
|
-
end
|
153
|
-
|
154
124
|
desc 'tag_del_department [TAG_ID, PARTY_IDS]', '删除标签部门'
|
155
125
|
def tag_del_department(tagid, partyids)
|
156
126
|
puts wechat_api.tag_del_user(tagid, nil, partyids.split(','))
|
157
127
|
end
|
158
128
|
|
159
|
-
desc 'tags', '获取标签列表'
|
160
|
-
def tags
|
161
|
-
puts wechat_api.tags
|
162
|
-
end
|
163
|
-
|
164
129
|
desc 'batch_job_result [JOB_ID]', '获取异步任务结果'
|
165
130
|
def batch_job_result(job_id)
|
166
131
|
puts wechat_api.batch_job_result(job_id)
|
@@ -441,6 +406,59 @@ class App < Thor
|
|
441
406
|
template = YAML.load(File.read(template_yaml_path))
|
442
407
|
puts wechat_api.template_message_send Wechat::Message.to(openid).template(template['template'])
|
443
408
|
end
|
409
|
+
|
410
|
+
desc 'tags', '获取所有标签'
|
411
|
+
def tags
|
412
|
+
puts wechat_api.tags
|
413
|
+
end
|
414
|
+
|
415
|
+
desc 'tag_create [TAGNAME, TAG_ID]', '创建标签'
|
416
|
+
method_option :tagid, aliases: '-id', desc: '整型,指定此参数时新增的标签会生成对应的标签id,不指定时则以目前最大的id自增' if in_corp_api_cmd
|
417
|
+
def tag_create(tag_name)
|
418
|
+
if in_corp_api_cmd
|
419
|
+
api_opts = options.slice(:tagid)
|
420
|
+
puts wechat_api.tag_create(tag_name, api_opts[:tagid])
|
421
|
+
else
|
422
|
+
puts wechat_api.tag_create(tag_name)
|
423
|
+
end
|
424
|
+
end
|
425
|
+
|
426
|
+
desc 'tag_update [TAG_ID, TAGNAME]', '更新标签名字'
|
427
|
+
def tag_update(tagid, tagname)
|
428
|
+
puts wechat_api.tag_update(tagid, tagname)
|
429
|
+
end
|
430
|
+
|
431
|
+
desc 'tag_delete [TAG_ID]', '删除标签'
|
432
|
+
def tag_delete(tagid)
|
433
|
+
puts wechat_api.tag_delete(tagid)
|
434
|
+
end
|
435
|
+
|
436
|
+
if in_corp_api_cmd
|
437
|
+
desc 'tag_add_user [TAG_ID, USER_IDS]', '增加标签成员'
|
438
|
+
else
|
439
|
+
desc 'tag_add_user [TAG_ID, OPEN_IDS]', '批量为用户打标签'
|
440
|
+
end
|
441
|
+
def tag_add_user(tagid, open_or_user_ids)
|
442
|
+
puts wechat_api.tag_add_user(tagid, open_or_user_ids.split(','))
|
443
|
+
end
|
444
|
+
|
445
|
+
if in_corp_api_cmd
|
446
|
+
desc 'tag_del_user [TAG_ID, USER_IDS]', '删除标签成员'
|
447
|
+
else
|
448
|
+
desc 'tag_del_user [TAG_ID, OPEN_IDS]', '批量为用户取消标签'
|
449
|
+
end
|
450
|
+
def tag_del_user(tagid, open_or_user_ids)
|
451
|
+
puts wechat_api.tag_del_user(tagid, open_or_user_ids.split(','))
|
452
|
+
end
|
453
|
+
|
454
|
+
if in_corp_api_cmd
|
455
|
+
desc 'tag [TAG_ID]', '获取标签成员'
|
456
|
+
else
|
457
|
+
desc 'tag [TAGID]', '获取标签下粉丝列表'
|
458
|
+
end
|
459
|
+
def tag(tagid)
|
460
|
+
puts wechat_api.tag tagid
|
461
|
+
end
|
444
462
|
end
|
445
463
|
|
446
464
|
App.start
|
data/lib/wechat/api.rb
CHANGED
@@ -133,6 +133,34 @@ module Wechat
|
|
133
133
|
get 'customservice/getonlinekflist'
|
134
134
|
end
|
135
135
|
|
136
|
+
def tags
|
137
|
+
get 'tags/get'
|
138
|
+
end
|
139
|
+
|
140
|
+
def tag_create(tag_name)
|
141
|
+
post 'tags/create', JSON.generate(tag: { name: tag_name })
|
142
|
+
end
|
143
|
+
|
144
|
+
def tag_update(tagid, new_tag_name)
|
145
|
+
post 'tags/update', JSON.generate(tag: { id: tagid, name: new_tag_name })
|
146
|
+
end
|
147
|
+
|
148
|
+
def tag_delete(tagid)
|
149
|
+
post 'tags/delete', JSON.generate(tag: { id: tagid })
|
150
|
+
end
|
151
|
+
|
152
|
+
def tag_add_user(tagid, openids)
|
153
|
+
post 'tags/members/batchtagging', JSON.generate(openid_list: openids, tagid: tagid)
|
154
|
+
end
|
155
|
+
|
156
|
+
def tag_del_user(tagid, openids)
|
157
|
+
post 'tags/members/batchuntagging', JSON.generate(openid_list: openids, tagid: tagid)
|
158
|
+
end
|
159
|
+
|
160
|
+
def tag(tagid, next_openid = '')
|
161
|
+
post 'user/tag/get', JSON.generate(tagid: tagid, next_openid: next_openid)
|
162
|
+
end
|
163
|
+
|
136
164
|
OAUTH2_BASE = 'https://api.weixin.qq.com/sns/'.freeze
|
137
165
|
|
138
166
|
def web_access_token(code)
|
@@ -34,7 +34,9 @@ module Wechat
|
|
34
34
|
def wechat_public_oauth2(oauth2_url)
|
35
35
|
if cookies.signed_or_encrypted[:we_openid].blank? && params[:code].blank?
|
36
36
|
redirect_to oauth2_url
|
37
|
-
elsif cookies.signed_or_encrypted[:we_openid].blank? &&
|
37
|
+
elsif cookies.signed_or_encrypted[:we_openid].blank? &&
|
38
|
+
params[:code].present? &&
|
39
|
+
params[:state].to_s == wechat.jsapi_ticket.oauth2_state.to_s # params[:state] maybe nil and wechat.jsapi_ticket.oauth2_state may be nil
|
38
40
|
access_info = wechat.web_access_token(params[:code])
|
39
41
|
cookies.signed_or_encrypted[:we_openid] = { value: access_info['openid'], expires: self.class.oauth2_cookie_duration.from_now }
|
40
42
|
yield access_info['openid'], access_info
|
data/lib/wechat/http_client.rb
CHANGED
@@ -8,6 +8,7 @@ module Wechat
|
|
8
8
|
@base = base
|
9
9
|
HTTP.timeout(:global, write: timeout, connect: timeout, read: timeout)
|
10
10
|
@ssl_context = OpenSSL::SSL::SSLContext.new
|
11
|
+
@ssl_context.ssl_version = :TLSv1_client
|
11
12
|
@ssl_context.verify_mode = OpenSSL::SSL::VERIFY_NONE if skip_verify_ssl
|
12
13
|
end
|
13
14
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: wechat
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.7.
|
4
|
+
version: 0.7.16
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Skinnyworm
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2016-07-
|
12
|
+
date: 2016-07-27 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: activesupport
|