sms_carrier 0.1.1 → 0.1.2

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
  SHA1:
3
- metadata.gz: bea90caa9579c390186c64fd2dbd159b8c4bfd70
4
- data.tar.gz: 2ee0fe5ef2db5c818c86d257c42ad9807d10609c
3
+ metadata.gz: ee73ecb55b99a951d996f41eaf2929f11c19e3b9
4
+ data.tar.gz: 18404897e902d9789ce14382e79ee477f79da951
5
5
  SHA512:
6
- metadata.gz: 4946aa528cd57098b66e4752f816f4ed9301a3a5036869fbd03e00b63e6207abeabfa53cfdd78997812226f701899bd3af7febfea97fe792fdcff170db190ecb
7
- data.tar.gz: 31813632c3f42980ca391daaee909ba77c1a3ce5427d4e79cf2b8924a15e42a4528cced415935661d98cb5a4758fe17cc68d6fe1cacd87419c5669b357ff323f
6
+ metadata.gz: b858afda7b224bd955e1408ccd9817063f4d5363cd1fea5111ced4b2aed217dffece2345aa1ec29f717a45effa738695d52bb640601e9bd3e30bf29518de550e
7
+ data.tar.gz: 7e02ab750c68e1d13211a37efe51cc9fbf1738230617d549e056389188cf861503fe5debc20e912a013f20977cbbcff42ef371fe7d62addb7d89668b8e3f1713
@@ -1,3 +1,7 @@
1
+ # v0.1.2 / 2015-10-29
2
+
3
+ * Add generators.
4
+
1
5
  # v0.1.1 / 2015-10-26
2
6
 
3
7
  * Fixed warning and add require file.
data/README.md CHANGED
@@ -61,6 +61,15 @@ Or you can send SMS without carrier and template:
61
61
  SmsCarrier::Base.sms(from: "+886987654321", to: "+886912345678", body: "Your token is #{token}, please confirm your phone number").deliver_now
62
62
  ```
63
63
 
64
+ ### Deliver Later
65
+ SMS Carrier use Active Job like Action Mailer. So you can deliver SMS later, too:
66
+ ```Ruby
67
+ sms.deliver_later
68
+ sms.deliver_later(wait_until: Date.tomorrow.noon)
69
+ sms.deliver_later(wait: 1.week)
70
+ ```
71
+ Options are defined by Active Job, please refer to [Active Job](https://github.com/rails/rails/blob/7f18ea14c893cb5c9f04d4fda9661126758332b5/activejob/lib/active_job/enqueuing.rb#L32).
72
+
64
73
  ### Setting defaults
65
74
  You can set up default settings in carrier by `default` method.
66
75
  ```Ruby
@@ -73,6 +82,62 @@ You can also set up in rails config, eg. `config/environments/production.rb`
73
82
  config.sms_carrier.default_options = { from: "+886987654321" }
74
83
  ```
75
84
 
85
+ ### Generators
86
+ You can run following commands to generate carriers:
87
+
88
+ rails g carrier [name] [action] [action]...
89
+
90
+ Eg
91
+
92
+ rails g carrier registration welcome
93
+
94
+ It creates a Registration carrier class and test:
95
+ ```
96
+ Carrier: app/carriers/registration_carrier.rb
97
+ Test: test/carriers/registration_carrier_test.rb
98
+ or
99
+ RSpec: spec/carriers/registration_carrier_spec.rb
100
+ ```
101
+ And class looks like this:
102
+ ```Ruby
103
+ class RegistrationCarrier < ApplicationCarrier
104
+ def welcome
105
+ # ...
106
+ end
107
+ end
108
+ ```
109
+
110
+ ### Delivery Methods
111
+ You can also refer to the projects:
112
+ * [twilio-carrier](https://github.com/emn178/twilio-carrier): Twilio SMS service.
113
+ * [yunpian-carrier](https://github.com/emn178/yunpian-carrier): Yunpian(云片) SMS service.
114
+ * [dynamic-carrier](https://github.com/emn178/dynamic-carrier): A delivery method layer that decides the delivery method dynamically by your rules.
115
+ * [virtual_sms](https://github.com/emn178/virtual_sms): You can send SMS to a virtual SMS box instead of real SMS service in development environment.
116
+
117
+ You can implement your delivery method.
118
+ ```Ruby
119
+ class MyCarrier
120
+ attr_accessor :settings
121
+
122
+ def initialize(settings)
123
+ self.settings = settings
124
+ end
125
+
126
+ def deliver!(sms)
127
+ # sms.to is Array
128
+ # my_deliver(sms.from, sms.to, sms.body)
129
+ end
130
+ end
131
+ SmsCarrier::Base.add_delivery_method :my, MyCarrier
132
+ ```
133
+ In your Rails project, you can set up in configuration:
134
+ ```Ruby
135
+ config.sms_carrier.delivery_method = :my
136
+ config.sms_carrier.my_settings = {
137
+ :settings => :pass_to_initialize
138
+ }
139
+ ```
140
+
76
141
  ### Difference with Action Mailer
77
142
  * SMS Carrier removed preview.
78
143
  * SMS Carrier removed attachments feature.
@@ -0,0 +1,11 @@
1
+ module Rspec
2
+ module Generators
3
+ class CarrierGenerator < ::Rails::Generators::NamedBase
4
+ source_root File.expand_path(File.join(File.dirname(__FILE__), 'templates'))
5
+
6
+ def create_carrier_test
7
+ template 'carrier_spec.rb', File.join('spec/carriers', class_path, "#{file_name}_carrier_spec.rb")
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,5 @@
1
+ require 'rails_helper'
2
+
3
+ RSpec.describe <%= class_name %>Carrier do
4
+ pending "add some examples to (or delete) #{__FILE__}"
5
+ end
@@ -0,0 +1,11 @@
1
+ module TestUnit
2
+ module Generators
3
+ class CarrierGenerator < ::Rails::Generators::NamedBase
4
+ source_root File.expand_path(File.join(File.dirname(__FILE__), 'templates'))
5
+
6
+ def create_carrier_test
7
+ template 'carrier_test.rb', File.join('test/carriers', class_path, "#{file_name}_carrier_test.rb")
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,4 @@
1
+ require 'test_helper'
2
+
3
+ class <%= class_name %>CarrierTest < ActiveSupport::TestCase
4
+ end
@@ -0,0 +1,16 @@
1
+ Description:
2
+ ============
3
+ Stubs out a new carrier and its views. Passes the carrier name, either
4
+ CamelCased or under_scored, and an optional list of emails as arguments.
5
+
6
+ This generates a carrier class in app/carriers and invokes your template
7
+ engine and test framework generators.
8
+
9
+ Example:
10
+ ========
11
+ rails generate carrier Notifications signup forgot_password invoice
12
+
13
+ creates a Notifications carrier class and test:
14
+ Carrier: app/carriers/notifications_carrier.rb
15
+ Test: test/carriers/notifications_carrier_test.rb
16
+ Rspec: spec/carriers/notifications_carrier_spec.rb
@@ -0,0 +1,25 @@
1
+ module Rails
2
+ module Generators
3
+ class CarrierGenerator < NamedBase
4
+ source_root File.expand_path("../templates", __FILE__)
5
+
6
+ argument :actions, type: :array, default: [], banner: "method method"
7
+
8
+ check_class_collision suffix: "Carrier"
9
+
10
+ def create_carrier_file
11
+ template "carrier.rb", File.join('app/carriers', class_path, "#{file_name}_carrier.rb")
12
+ if self.behavior == :invoke
13
+ template "application_carrier.rb", 'app/carriers/application_carrier.rb'
14
+ end
15
+ end
16
+
17
+ hook_for :test_framework
18
+
19
+ protected
20
+ def file_name
21
+ @_file_name ||= super.gsub(/\_carrier/i, '')
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,3 @@
1
+ class ApplicationCarrier < SmsCarrier::Base
2
+ default from: "+886987654321"
3
+ end
@@ -0,0 +1,11 @@
1
+ <% module_namespacing do -%>
2
+ class <%= class_name %>Carrier < ApplicationCarrier
3
+ <% actions.each do |action| -%>
4
+ def <%= action %>
5
+ @greeting = "Hi"
6
+
7
+ sms to: "+88612345678"
8
+ end
9
+ <% end -%>
10
+ end
11
+ <% end -%>
@@ -275,11 +275,7 @@ module SmsCarrier
275
275
  templates_name = options.delete(:template_name) || action_name
276
276
 
277
277
  template = lookup_context.find(templates_name, templates_path)
278
- if template.nil?
279
- raise ActionView::MissingTemplate.new(templates_path, templates_name, templates_path, false, 'carrier')
280
- else
281
- return render(template: template)
282
- end
278
+ return render(template: template)
283
279
  end
284
280
  end
285
281
 
@@ -1,3 +1,3 @@
1
1
  module SmsCarrier
2
- VERSION = "0.1.1"
2
+ VERSION = "0.1.2"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sms_carrier
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chen Yi-Cyuan
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-10-26 00:00:00.000000000 Z
11
+ date: 2015-10-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: actionpack
@@ -110,6 +110,14 @@ files:
110
110
  - LICENSE.txt
111
111
  - README.md
112
112
  - Rakefile
113
+ - lib/generators/rspec/carrier_generator.rb
114
+ - lib/generators/rspec/templates/carrier_spec.rb
115
+ - lib/generators/test_unit/carrier_generator.rb
116
+ - lib/generators/test_unit/templates/carrier_test.rb
117
+ - lib/rails/generators/carrier/USAGE
118
+ - lib/rails/generators/carrier/carrier_generator.rb
119
+ - lib/rails/generators/carrier/templates/application_carrier.rb
120
+ - lib/rails/generators/carrier/templates/carrier.rb
113
121
  - lib/sms_carrier.rb
114
122
  - lib/sms_carrier/base.rb
115
123
  - lib/sms_carrier/delivery_job.rb