courier 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.document +5 -0
- data/.rspec +1 -0
- data/.watchr +99 -0
- data/Gemfile +21 -0
- data/LICENSE.txt +20 -0
- data/README.rdoc +98 -0
- data/Rakefile +54 -0
- data/VERSION +1 -0
- data/courier.gemspec +135 -0
- data/lib/courier.rb +46 -0
- data/lib/courier/config.rb +50 -0
- data/lib/courier/engine.rb +4 -0
- data/lib/courier/message.rb +26 -0
- data/lib/courier/owner.rb +32 -0
- data/lib/courier/owner_setting.rb +45 -0
- data/lib/courier/service/active_mailer.rb +4 -0
- data/lib/courier/service/base.rb +55 -0
- data/lib/courier/service/facebook.rb +26 -0
- data/lib/courier/service/gritter_notice.rb +18 -0
- data/lib/courier/template/base.rb +41 -0
- data/lib/generators/courier_generator.rb +29 -0
- data/lib/generators/templates/courier.rb +7 -0
- data/lib/generators/templates/migration.rb +36 -0
- data/spec/courier/config_spec.rb +37 -0
- data/spec/courier/message_spec.rb +19 -0
- data/spec/courier/owner_setting_spec.rb +43 -0
- data/spec/courier/owner_spec.rb +32 -0
- data/spec/courier/service/base_spec.rb +48 -0
- data/spec/courier/service/facebook_spec.rb +22 -0
- data/spec/courier/service/gritter_notice_spec.rb +20 -0
- data/spec/courier/template/base_spec.rb +25 -0
- data/spec/courier_spec.rb +25 -0
- data/spec/examples/example1_spec.rb +78 -0
- data/spec/spec_helper.rb +47 -0
- data/spec/support/factories.rb +27 -0
- data/spec/support/gems_simulation.rb +11 -0
- data/spec/support/migration.rb +7 -0
- data/spec/support/mocks.rb +19 -0
- data/spec/support/user.rb +4 -0
- metadata +333 -0
data/.document
ADDED
data/.rspec
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
--colour --format d
|
data/.watchr
ADDED
@@ -0,0 +1,99 @@
|
|
1
|
+
|
2
|
+
# https://github.com/rspec/rspec-rails/blob/master/specs.watchr
|
3
|
+
|
4
|
+
# Other examples:
|
5
|
+
# https://gist.github.com/298168
|
6
|
+
|
7
|
+
# --------------------------------------------------
|
8
|
+
# Convenience Methods
|
9
|
+
# --------------------------------------------------
|
10
|
+
|
11
|
+
def all_spec_files
|
12
|
+
'spec/**/*_spec.rb'
|
13
|
+
end
|
14
|
+
|
15
|
+
def run_spec_matching(thing_to_match)
|
16
|
+
puts "Matching #{thing_to_match}"
|
17
|
+
matches = Dir[all_spec_files].grep(/#{thing_to_match}_spec/i)
|
18
|
+
if matches.empty?
|
19
|
+
puts "Sorry, thanks for playing, but there were no matches for #{thing_to_match}"
|
20
|
+
else
|
21
|
+
run matches.join(' ')
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
def run(files_to_run)
|
26
|
+
puts "Running #{files_to_run}"
|
27
|
+
system "bundle exec rspec -d #{files_to_run}"
|
28
|
+
no_int_for_you
|
29
|
+
notify
|
30
|
+
puts
|
31
|
+
end
|
32
|
+
|
33
|
+
def notify message=''
|
34
|
+
# message = message.split('---------------------------------------------------------------')[3].split('Time taken by tests')[0]
|
35
|
+
# image = message.include?('fails') ? "~/.watchr_images/failed.png" : "~/.watchr_images/passed.png"
|
36
|
+
|
37
|
+
# Grub images from autotest-growl
|
38
|
+
image = $?.success? ? "~/.watchr_images/passed.png" : "~/.watchr_images/failed.png"
|
39
|
+
message = $?.success? ? "success" : "failed"
|
40
|
+
|
41
|
+
options = "-i #{File.expand_path(image)} "
|
42
|
+
options += '-u critical -t 10000 ' unless $?.success?
|
43
|
+
|
44
|
+
notify_send = `which notify-send`.chomp
|
45
|
+
cmd = "#{notify_send} #{options} 'Watchr Test Results: #{message}'"
|
46
|
+
system cmd
|
47
|
+
end
|
48
|
+
|
49
|
+
def run_all_specs
|
50
|
+
run('spec/') #all_spec_files
|
51
|
+
end
|
52
|
+
|
53
|
+
|
54
|
+
# def run_suite
|
55
|
+
# system "clear"
|
56
|
+
# run_spec('spec/*/*_spec.rb spec/*/*/*_spec.rb')
|
57
|
+
# end
|
58
|
+
|
59
|
+
|
60
|
+
|
61
|
+
# --------------------------------------------------
|
62
|
+
# Watchr Rules
|
63
|
+
# --------------------------------------------------
|
64
|
+
watch('^app/(.*)\.(.*)') { |m| run_spec_matching(m[1]) }
|
65
|
+
watch('^lib\/(.*)\.rb') { |m| run_spec_matching(m[1]) }
|
66
|
+
watch('^spec\/(.*)_spec\.rb') { |m| run_spec_matching(m[1]) }
|
67
|
+
watch('^spec\/factories/(.*)_factory\.rb') { |m| run_spec_matching(m[1]) }
|
68
|
+
watch('^spec/spec_helper\.rb') { run_all_specs }
|
69
|
+
watch('^spec/support/.*\.rb') { run_all_specs }
|
70
|
+
|
71
|
+
# --------------------------------------------------
|
72
|
+
# Signal Handling
|
73
|
+
# --------------------------------------------------
|
74
|
+
|
75
|
+
def no_int_for_you
|
76
|
+
@sent_an_int = nil
|
77
|
+
end
|
78
|
+
|
79
|
+
# Ctrl-C
|
80
|
+
Signal.trap 'INT' do
|
81
|
+
if @sent_an_int then
|
82
|
+
puts " A second INT? Ok, I get the message. Shutting down now."
|
83
|
+
exit
|
84
|
+
else
|
85
|
+
puts " Did you just send me an INT? Ugh. I'll quit for real if you do it again."
|
86
|
+
@sent_an_int = true
|
87
|
+
Kernel.sleep 1.5
|
88
|
+
run_all_specs
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
|
93
|
+
# Ctrl-\
|
94
|
+
Signal.trap 'QUIT' do
|
95
|
+
puts " --- Running all tests ---\n\n"
|
96
|
+
run_suite
|
97
|
+
end
|
98
|
+
|
99
|
+
puts "Watching.."
|
data/Gemfile
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
source "http://rubygems.org"
|
2
|
+
|
3
|
+
gem 'activerecord', "~> 3.0"
|
4
|
+
gem 'actionpack', "~> 3.0"
|
5
|
+
gem 'state_machine', "~> 0.10.2"
|
6
|
+
|
7
|
+
# Add dependencies to develop your gem here.
|
8
|
+
# Include everything needed to run rake, tests, features, etc.
|
9
|
+
group :development, :test do
|
10
|
+
gem 'pg'
|
11
|
+
gem "ruby-debug"
|
12
|
+
gem "watchr"
|
13
|
+
gem "sqlite3"
|
14
|
+
gem "factory_girl"
|
15
|
+
gem "shoulda", ">= 0"
|
16
|
+
gem "rspec", "~> 2.5"
|
17
|
+
gem "rspec-rails"
|
18
|
+
gem "bundler", "~> 1.0.0"
|
19
|
+
gem "jeweler", "~> 1.5.2"
|
20
|
+
gem "rcov", ">= 0"
|
21
|
+
end
|
data/LICENSE.txt
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright (c) 2011 Danil Pismenny
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
a copy of this software and associated documentation files (the
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.rdoc
ADDED
@@ -0,0 +1,98 @@
|
|
1
|
+
= Courier
|
2
|
+
|
3
|
+
Давным давно, в одной далекой-предалекой галактике, был такой модем USR Courier,
|
4
|
+
он хорошо держал карриер и был мечтой каждого фидошника. А сейчас чтобы получать
|
5
|
+
много не нужных писем достаточно зарегистрироваться на еще одной социальной
|
6
|
+
сети.
|
7
|
+
|
8
|
+
Чтобы помочь социальной сети справиться с большим количеством видов подписок и
|
9
|
+
оповещений, а пользователю настроить способы их доставки мы разработали плагин
|
10
|
+
Courier. Courier On Rails.
|
11
|
+
|
12
|
+
Courier - Система управления пользовательскими оповещениями и подписоками.
|
13
|
+
|
14
|
+
== Установка
|
15
|
+
|
16
|
+
Gemfile:
|
17
|
+
|
18
|
+
gem 'courier'
|
19
|
+
|
20
|
+
Создание миграции и конфигцарции <tt>./config/initializers/courier.rb</tt>
|
21
|
+
|
22
|
+
rails g courier
|
23
|
+
|
24
|
+
rake db:migrate
|
25
|
+
|
26
|
+
В <tt>config/initializers/courier.rb</tt> регистрируем используемые сервисы, шаблоны и их значения по умолчанию:
|
27
|
+
|
28
|
+
Courier.init do |d|
|
29
|
+
d.services :active_mailer, :gritter_notice, :facebook
|
30
|
+
d.template :import_complete, :off, :on, :off
|
31
|
+
d.template :avatar_loaded, :on, :off, :on
|
32
|
+
d.template :weekly_subscription, :on, :on, :on
|
33
|
+
end
|
34
|
+
|
35
|
+
В модели пользователя:
|
36
|
+
|
37
|
+
class User << ActiveRecord::Base
|
38
|
+
has_courier
|
39
|
+
...
|
40
|
+
|
41
|
+
== Использование
|
42
|
+
|
43
|
+
Посылаем пользователю сообщение по шаблону <tt>:import_complete<tt> во все разрешенные сервисы
|
44
|
+
|
45
|
+
user.message :import_complete, {:some=>'arguments in hash'}
|
46
|
+
|
47
|
+
Если сервис отправляет сообщение в реальном времени, то он его уже
|
48
|
+
отправил, а если сообщения собираются для дальнейшей отправки, то
|
49
|
+
осуществляется эта доставка так:
|
50
|
+
|
51
|
+
Courier.deliver_all!
|
52
|
+
|
53
|
+
== Сервисы
|
54
|
+
|
55
|
+
На данный момент реализованы сервисы:
|
56
|
+
|
57
|
+
* Courier::Service::GritterNotice - отправка сообщений через gritter_notices[http://github.com/dapi/gritter_notices]
|
58
|
+
* Courier::Service::ActionMailer - TODO
|
59
|
+
* Courier::Service::MailChimp - TODO
|
60
|
+
* Courier::Service::Facebook - Использует Koala[https://github.com/arsduo/koala]
|
61
|
+
|
62
|
+
== Свой сервис
|
63
|
+
|
64
|
+
Все сервисы наследуютсяо от <tt>Courier::Service::Base</tt>. Последнее
|
65
|
+
имя класс автоматически становится именем этого сервиса через
|
66
|
+
<tt>demodulize.underscore</tt>. Всего нужно имплементировать 2 метода:
|
67
|
+
|
68
|
+
* message(owner, template, args)
|
69
|
+
* deliver!
|
70
|
+
|
71
|
+
=== Сервис отложенной отправки
|
72
|
+
|
73
|
+
Достаточно реализовать метод <tt>deliver!</tt>, так как +message+ удачно складывает все сообщения в базу. Например:
|
74
|
+
|
75
|
+
def deliver!
|
76
|
+
courier_messages.fresh.each do |message|
|
77
|
+
send_message_my_way message.owner, message.text
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
81
|
+
=== Сервис отправки в реальном времени
|
82
|
+
|
83
|
+
Достаточно реализоват метод +message+. Например:
|
84
|
+
|
85
|
+
def message(owner, template, args)
|
86
|
+
send_message_my_way owner, template.get_text(args)
|
87
|
+
end
|
88
|
+
|
89
|
+
|
90
|
+
|
91
|
+
== Contributing to courier
|
92
|
+
|
93
|
+
* Yes, please.
|
94
|
+
|
95
|
+
== Copyright
|
96
|
+
|
97
|
+
Copyright (c) 2011 Danil Pismenny.
|
98
|
+
|
data/Rakefile
ADDED
@@ -0,0 +1,54 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
require 'rubygems'
|
3
|
+
require 'bundler'
|
4
|
+
begin
|
5
|
+
Bundler.setup(:default, :development)
|
6
|
+
rescue Bundler::BundlerError => e
|
7
|
+
$stderr.puts e.message
|
8
|
+
$stderr.puts "Run `bundle install` to install missing gems"
|
9
|
+
exit e.status_code
|
10
|
+
end
|
11
|
+
require 'rake'
|
12
|
+
|
13
|
+
require 'jeweler'
|
14
|
+
Jeweler::Tasks.new do |gem|
|
15
|
+
# gem is a Gem::Specification... see http://docs.rubygems.org/read/chapter/20 for more options
|
16
|
+
gem.name = "courier"
|
17
|
+
gem.homepage = "http://github.com/dapi/courier"
|
18
|
+
gem.license = "MIT"
|
19
|
+
gem.summary = "Система управления пользовательскими оповещениями и подписками"
|
20
|
+
gem.description = 'Система управления пользовательскими оповещениями и подписками'
|
21
|
+
gem.email = "danil@orionet.ru"
|
22
|
+
gem.authors = ["Danil Pismenny"]
|
23
|
+
# Include your dependencies below. Runtime dependencies are required when using your gem,
|
24
|
+
# and development dependencies are only needed for development (ie running rake tasks, tests, etc)
|
25
|
+
# gem.add_runtime_dependency 'jabber4r', '> 0.1'
|
26
|
+
# gem.add_development_dependency 'rspec', '> 1.2.3'
|
27
|
+
end
|
28
|
+
Jeweler::RubygemsDotOrgTasks.new
|
29
|
+
|
30
|
+
require 'rake/testtask'
|
31
|
+
Rake::TestTask.new(:test) do |test|
|
32
|
+
test.libs << 'lib' << 'test'
|
33
|
+
test.pattern = 'test/**/test_*.rb'
|
34
|
+
test.verbose = true
|
35
|
+
end
|
36
|
+
|
37
|
+
require 'rcov/rcovtask'
|
38
|
+
Rcov::RcovTask.new do |test|
|
39
|
+
test.libs << 'test'
|
40
|
+
test.pattern = 'test/**/test_*.rb'
|
41
|
+
test.verbose = true
|
42
|
+
end
|
43
|
+
|
44
|
+
task :default => :test
|
45
|
+
|
46
|
+
require 'rake/rdoctask'
|
47
|
+
Rake::RDocTask.new do |rdoc|
|
48
|
+
version = File.exist?('VERSION') ? File.read('VERSION') : ""
|
49
|
+
|
50
|
+
rdoc.rdoc_dir = 'rdoc'
|
51
|
+
rdoc.title = "courier #{version}"
|
52
|
+
rdoc.rdoc_files.include('README*')
|
53
|
+
rdoc.rdoc_files.include('lib/**/*.rb')
|
54
|
+
end
|
data/VERSION
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
0.1.2
|
data/courier.gemspec
ADDED
@@ -0,0 +1,135 @@
|
|
1
|
+
# Generated by jeweler
|
2
|
+
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
|
+
# -*- encoding: utf-8 -*-
|
5
|
+
|
6
|
+
Gem::Specification.new do |s|
|
7
|
+
s.name = %q{courier}
|
8
|
+
s.version = "0.1.2"
|
9
|
+
|
10
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
+
s.authors = ["Danil Pismenny"]
|
12
|
+
s.date = %q{2011-04-02}
|
13
|
+
s.description = %q{Система управления пользовательскими оповещениями и подписками}
|
14
|
+
s.email = %q{danil@orionet.ru}
|
15
|
+
s.extra_rdoc_files = [
|
16
|
+
"LICENSE.txt",
|
17
|
+
"README.rdoc"
|
18
|
+
]
|
19
|
+
s.files = [
|
20
|
+
".document",
|
21
|
+
".rspec",
|
22
|
+
".watchr",
|
23
|
+
"Gemfile",
|
24
|
+
"LICENSE.txt",
|
25
|
+
"README.rdoc",
|
26
|
+
"Rakefile",
|
27
|
+
"VERSION",
|
28
|
+
"courier.gemspec",
|
29
|
+
"lib/courier.rb",
|
30
|
+
"lib/courier/config.rb",
|
31
|
+
"lib/courier/engine.rb",
|
32
|
+
"lib/courier/message.rb",
|
33
|
+
"lib/courier/owner.rb",
|
34
|
+
"lib/courier/owner_setting.rb",
|
35
|
+
"lib/courier/service/active_mailer.rb",
|
36
|
+
"lib/courier/service/base.rb",
|
37
|
+
"lib/courier/service/facebook.rb",
|
38
|
+
"lib/courier/service/gritter_notice.rb",
|
39
|
+
"lib/courier/template/base.rb",
|
40
|
+
"lib/generators/courier_generator.rb",
|
41
|
+
"lib/generators/templates/courier.rb",
|
42
|
+
"lib/generators/templates/migration.rb",
|
43
|
+
"spec/courier/config_spec.rb",
|
44
|
+
"spec/courier/message_spec.rb",
|
45
|
+
"spec/courier/owner_setting_spec.rb",
|
46
|
+
"spec/courier/owner_spec.rb",
|
47
|
+
"spec/courier/service/base_spec.rb",
|
48
|
+
"spec/courier/service/facebook_spec.rb",
|
49
|
+
"spec/courier/service/gritter_notice_spec.rb",
|
50
|
+
"spec/courier/template/base_spec.rb",
|
51
|
+
"spec/courier_spec.rb",
|
52
|
+
"spec/examples/example1_spec.rb",
|
53
|
+
"spec/spec_helper.rb",
|
54
|
+
"spec/support/factories.rb",
|
55
|
+
"spec/support/gems_simulation.rb",
|
56
|
+
"spec/support/migration.rb",
|
57
|
+
"spec/support/mocks.rb",
|
58
|
+
"spec/support/user.rb"
|
59
|
+
]
|
60
|
+
s.homepage = %q{http://github.com/dapi/courier}
|
61
|
+
s.licenses = ["MIT"]
|
62
|
+
s.require_paths = ["lib"]
|
63
|
+
s.rubygems_version = %q{1.5.0}
|
64
|
+
s.summary = %q{Система управления пользовательскими оповещениями и подписками}
|
65
|
+
s.test_files = [
|
66
|
+
"spec/courier/config_spec.rb",
|
67
|
+
"spec/courier/message_spec.rb",
|
68
|
+
"spec/courier/owner_setting_spec.rb",
|
69
|
+
"spec/courier/owner_spec.rb",
|
70
|
+
"spec/courier/service/base_spec.rb",
|
71
|
+
"spec/courier/service/facebook_spec.rb",
|
72
|
+
"spec/courier/service/gritter_notice_spec.rb",
|
73
|
+
"spec/courier/template/base_spec.rb",
|
74
|
+
"spec/courier_spec.rb",
|
75
|
+
"spec/examples/example1_spec.rb",
|
76
|
+
"spec/spec_helper.rb",
|
77
|
+
"spec/support/factories.rb",
|
78
|
+
"spec/support/gems_simulation.rb",
|
79
|
+
"spec/support/migration.rb",
|
80
|
+
"spec/support/mocks.rb",
|
81
|
+
"spec/support/user.rb"
|
82
|
+
]
|
83
|
+
|
84
|
+
if s.respond_to? :specification_version then
|
85
|
+
s.specification_version = 3
|
86
|
+
|
87
|
+
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
88
|
+
s.add_runtime_dependency(%q<activerecord>, ["~> 3.0"])
|
89
|
+
s.add_runtime_dependency(%q<actionpack>, ["~> 3.0"])
|
90
|
+
s.add_runtime_dependency(%q<state_machine>, ["~> 0.10.2"])
|
91
|
+
s.add_development_dependency(%q<pg>, [">= 0"])
|
92
|
+
s.add_development_dependency(%q<ruby-debug>, [">= 0"])
|
93
|
+
s.add_development_dependency(%q<watchr>, [">= 0"])
|
94
|
+
s.add_development_dependency(%q<sqlite3>, [">= 0"])
|
95
|
+
s.add_development_dependency(%q<factory_girl>, [">= 0"])
|
96
|
+
s.add_development_dependency(%q<shoulda>, [">= 0"])
|
97
|
+
s.add_development_dependency(%q<rspec>, ["~> 2.5"])
|
98
|
+
s.add_development_dependency(%q<rspec-rails>, [">= 0"])
|
99
|
+
s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
|
100
|
+
s.add_development_dependency(%q<jeweler>, ["~> 1.5.2"])
|
101
|
+
s.add_development_dependency(%q<rcov>, [">= 0"])
|
102
|
+
else
|
103
|
+
s.add_dependency(%q<activerecord>, ["~> 3.0"])
|
104
|
+
s.add_dependency(%q<actionpack>, ["~> 3.0"])
|
105
|
+
s.add_dependency(%q<state_machine>, ["~> 0.10.2"])
|
106
|
+
s.add_dependency(%q<pg>, [">= 0"])
|
107
|
+
s.add_dependency(%q<ruby-debug>, [">= 0"])
|
108
|
+
s.add_dependency(%q<watchr>, [">= 0"])
|
109
|
+
s.add_dependency(%q<sqlite3>, [">= 0"])
|
110
|
+
s.add_dependency(%q<factory_girl>, [">= 0"])
|
111
|
+
s.add_dependency(%q<shoulda>, [">= 0"])
|
112
|
+
s.add_dependency(%q<rspec>, ["~> 2.5"])
|
113
|
+
s.add_dependency(%q<rspec-rails>, [">= 0"])
|
114
|
+
s.add_dependency(%q<bundler>, ["~> 1.0.0"])
|
115
|
+
s.add_dependency(%q<jeweler>, ["~> 1.5.2"])
|
116
|
+
s.add_dependency(%q<rcov>, [">= 0"])
|
117
|
+
end
|
118
|
+
else
|
119
|
+
s.add_dependency(%q<activerecord>, ["~> 3.0"])
|
120
|
+
s.add_dependency(%q<actionpack>, ["~> 3.0"])
|
121
|
+
s.add_dependency(%q<state_machine>, ["~> 0.10.2"])
|
122
|
+
s.add_dependency(%q<pg>, [">= 0"])
|
123
|
+
s.add_dependency(%q<ruby-debug>, [">= 0"])
|
124
|
+
s.add_dependency(%q<watchr>, [">= 0"])
|
125
|
+
s.add_dependency(%q<sqlite3>, [">= 0"])
|
126
|
+
s.add_dependency(%q<factory_girl>, [">= 0"])
|
127
|
+
s.add_dependency(%q<shoulda>, [">= 0"])
|
128
|
+
s.add_dependency(%q<rspec>, ["~> 2.5"])
|
129
|
+
s.add_dependency(%q<rspec-rails>, [">= 0"])
|
130
|
+
s.add_dependency(%q<bundler>, ["~> 1.0.0"])
|
131
|
+
s.add_dependency(%q<jeweler>, ["~> 1.5.2"])
|
132
|
+
s.add_dependency(%q<rcov>, [">= 0"])
|
133
|
+
end
|
134
|
+
end
|
135
|
+
|
data/lib/courier.rb
ADDED
@@ -0,0 +1,46 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
module Courier
|
3
|
+
require 'courier/owner_setting'
|
4
|
+
require 'courier/config'
|
5
|
+
module Service
|
6
|
+
require 'courier/service/base'
|
7
|
+
Dir["#{File.dirname(__FILE__)}/courier/service/**/*.rb"].each {|f| require f}
|
8
|
+
end
|
9
|
+
module Template
|
10
|
+
require 'courier/template/base'
|
11
|
+
end
|
12
|
+
|
13
|
+
class << self
|
14
|
+
cattr_accessor :config
|
15
|
+
|
16
|
+
def init
|
17
|
+
yield self.config = Courier::Config.new
|
18
|
+
end
|
19
|
+
|
20
|
+
def deliver_all!
|
21
|
+
config.services.each do |service|
|
22
|
+
service.deliver!
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def template(name)
|
27
|
+
config.get_template(name)
|
28
|
+
end
|
29
|
+
|
30
|
+
def service(name)
|
31
|
+
config.get_service(name)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
require 'courier/message'
|
37
|
+
|
38
|
+
require 'courier/owner'
|
39
|
+
ActiveRecord::Base.send(:extend, Courier::Owner )
|
40
|
+
|
41
|
+
#require 'gritter_notices/view_helpers' ActionView::Base.send(:include, GritterNotices::ViewHelpers )
|
42
|
+
# require 'gritter_notices/rspec_matcher'
|
43
|
+
|
44
|
+
require 'courier/engine' if defined?(Rails)
|
45
|
+
|
46
|
+
|