carrier 0.0.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (257) hide show
  1. data/.document +5 -0
  2. data/.rspec +1 -0
  3. data/Gemfile +27 -0
  4. data/LICENSE.txt +20 -0
  5. data/MIT-LICENSE +20 -0
  6. data/README.textile +111 -0
  7. data/Rakefile +48 -0
  8. data/VERSION +1 -0
  9. data/app/assets/images/.gitkeep +0 -0
  10. data/app/assets/javascripts/autocomplete.js +4 -0
  11. data/app/assets/javascripts/autocomplete/i18n/jquery-ui-i18n.js +1379 -0
  12. data/app/assets/javascripts/autocomplete/i18n/jquery.ui.datepicker-af.js +23 -0
  13. data/app/assets/javascripts/autocomplete/i18n/jquery.ui.datepicker-ar-DZ.js +23 -0
  14. data/app/assets/javascripts/autocomplete/i18n/jquery.ui.datepicker-ar.js +23 -0
  15. data/app/assets/javascripts/autocomplete/i18n/jquery.ui.datepicker-az.js +23 -0
  16. data/app/assets/javascripts/autocomplete/i18n/jquery.ui.datepicker-bg.js +24 -0
  17. data/app/assets/javascripts/autocomplete/i18n/jquery.ui.datepicker-bs.js +23 -0
  18. data/app/assets/javascripts/autocomplete/i18n/jquery.ui.datepicker-ca.js +23 -0
  19. data/app/assets/javascripts/autocomplete/i18n/jquery.ui.datepicker-cs.js +23 -0
  20. data/app/assets/javascripts/autocomplete/i18n/jquery.ui.datepicker-da.js +23 -0
  21. data/app/assets/javascripts/autocomplete/i18n/jquery.ui.datepicker-de.js +23 -0
  22. data/app/assets/javascripts/autocomplete/i18n/jquery.ui.datepicker-el.js +23 -0
  23. data/app/assets/javascripts/autocomplete/i18n/jquery.ui.datepicker-en-AU.js +23 -0
  24. data/app/assets/javascripts/autocomplete/i18n/jquery.ui.datepicker-en-GB.js +23 -0
  25. data/app/assets/javascripts/autocomplete/i18n/jquery.ui.datepicker-en-NZ.js +23 -0
  26. data/app/assets/javascripts/autocomplete/i18n/jquery.ui.datepicker-eo.js +23 -0
  27. data/app/assets/javascripts/autocomplete/i18n/jquery.ui.datepicker-es.js +23 -0
  28. data/app/assets/javascripts/autocomplete/i18n/jquery.ui.datepicker-et.js +23 -0
  29. data/app/assets/javascripts/autocomplete/i18n/jquery.ui.datepicker-eu.js +23 -0
  30. data/app/assets/javascripts/autocomplete/i18n/jquery.ui.datepicker-fa.js +23 -0
  31. data/app/assets/javascripts/autocomplete/i18n/jquery.ui.datepicker-fi.js +23 -0
  32. data/app/assets/javascripts/autocomplete/i18n/jquery.ui.datepicker-fo.js +23 -0
  33. data/app/assets/javascripts/autocomplete/i18n/jquery.ui.datepicker-fr-CH.js +23 -0
  34. data/app/assets/javascripts/autocomplete/i18n/jquery.ui.datepicker-fr.js +25 -0
  35. data/app/assets/javascripts/autocomplete/i18n/jquery.ui.datepicker-gl.js +23 -0
  36. data/app/assets/javascripts/autocomplete/i18n/jquery.ui.datepicker-he.js +23 -0
  37. data/app/assets/javascripts/autocomplete/i18n/jquery.ui.datepicker-hr.js +23 -0
  38. data/app/assets/javascripts/autocomplete/i18n/jquery.ui.datepicker-hu.js +23 -0
  39. data/app/assets/javascripts/autocomplete/i18n/jquery.ui.datepicker-hy.js +23 -0
  40. data/app/assets/javascripts/autocomplete/i18n/jquery.ui.datepicker-id.js +23 -0
  41. data/app/assets/javascripts/autocomplete/i18n/jquery.ui.datepicker-is.js +23 -0
  42. data/app/assets/javascripts/autocomplete/i18n/jquery.ui.datepicker-it.js +23 -0
  43. data/app/assets/javascripts/autocomplete/i18n/jquery.ui.datepicker-ja.js +23 -0
  44. data/app/assets/javascripts/autocomplete/i18n/jquery.ui.datepicker-ko.js +23 -0
  45. data/app/assets/javascripts/autocomplete/i18n/jquery.ui.datepicker-kz.js +23 -0
  46. data/app/assets/javascripts/autocomplete/i18n/jquery.ui.datepicker-lt.js +23 -0
  47. data/app/assets/javascripts/autocomplete/i18n/jquery.ui.datepicker-lv.js +23 -0
  48. data/app/assets/javascripts/autocomplete/i18n/jquery.ui.datepicker-ml.js +23 -0
  49. data/app/assets/javascripts/autocomplete/i18n/jquery.ui.datepicker-ms.js +23 -0
  50. data/app/assets/javascripts/autocomplete/i18n/jquery.ui.datepicker-nl.js +23 -0
  51. data/app/assets/javascripts/autocomplete/i18n/jquery.ui.datepicker-no.js +23 -0
  52. data/app/assets/javascripts/autocomplete/i18n/jquery.ui.datepicker-pl.js +23 -0
  53. data/app/assets/javascripts/autocomplete/i18n/jquery.ui.datepicker-pt-BR.js +23 -0
  54. data/app/assets/javascripts/autocomplete/i18n/jquery.ui.datepicker-pt.js +22 -0
  55. data/app/assets/javascripts/autocomplete/i18n/jquery.ui.datepicker-rm.js +21 -0
  56. data/app/assets/javascripts/autocomplete/i18n/jquery.ui.datepicker-ro.js +26 -0
  57. data/app/assets/javascripts/autocomplete/i18n/jquery.ui.datepicker-ru.js +23 -0
  58. data/app/assets/javascripts/autocomplete/i18n/jquery.ui.datepicker-sk.js +23 -0
  59. data/app/assets/javascripts/autocomplete/i18n/jquery.ui.datepicker-sl.js +24 -0
  60. data/app/assets/javascripts/autocomplete/i18n/jquery.ui.datepicker-sq.js +23 -0
  61. data/app/assets/javascripts/autocomplete/i18n/jquery.ui.datepicker-sr-SR.js +23 -0
  62. data/app/assets/javascripts/autocomplete/i18n/jquery.ui.datepicker-sr.js +23 -0
  63. data/app/assets/javascripts/autocomplete/i18n/jquery.ui.datepicker-sv.js +23 -0
  64. data/app/assets/javascripts/autocomplete/i18n/jquery.ui.datepicker-ta.js +23 -0
  65. data/app/assets/javascripts/autocomplete/i18n/jquery.ui.datepicker-th.js +23 -0
  66. data/app/assets/javascripts/autocomplete/i18n/jquery.ui.datepicker-tj.js +23 -0
  67. data/app/assets/javascripts/autocomplete/i18n/jquery.ui.datepicker-tr.js +23 -0
  68. data/app/assets/javascripts/autocomplete/i18n/jquery.ui.datepicker-uk.js +23 -0
  69. data/app/assets/javascripts/autocomplete/i18n/jquery.ui.datepicker-vi.js +23 -0
  70. data/app/assets/javascripts/autocomplete/i18n/jquery.ui.datepicker-zh-CN.js +23 -0
  71. data/app/assets/javascripts/autocomplete/i18n/jquery.ui.datepicker-zh-HK.js +23 -0
  72. data/app/assets/javascripts/autocomplete/i18n/jquery.ui.datepicker-zh-TW.js +23 -0
  73. data/app/assets/javascripts/autocomplete/jquery.ui.autocomplete.min.js +32 -0
  74. data/app/assets/javascripts/autocomplete/jquery.ui.core.min.js +17 -0
  75. data/app/assets/javascripts/autocomplete/jquery.ui.position.min.js +16 -0
  76. data/app/assets/javascripts/autocomplete/jquery.ui.widget.min.js +15 -0
  77. data/app/assets/javascripts/carrier.js +8 -0
  78. data/app/assets/javascripts/jquery.min.js +16 -0
  79. data/app/assets/javascripts/rails.js +169 -0
  80. data/app/assets/javascripts/rich-multiselect/jquery-ui.min.js +405 -0
  81. data/app/assets/javascripts/rich-multiselect/locale/ui-multiselect-de.js +11 -0
  82. data/app/assets/javascripts/rich-multiselect/locale/ui-multiselect-en.js +11 -0
  83. data/app/assets/javascripts/rich-multiselect/locale/ui-multiselect-es.js +11 -0
  84. data/app/assets/javascripts/rich-multiselect/locale/ui-multiselect-fr.js +11 -0
  85. data/app/assets/javascripts/rich-multiselect/locale/ui-multiselect-it.js +13 -0
  86. data/app/assets/javascripts/rich-multiselect/plugins/localisation/jquery.localisation-min.js +7 -0
  87. data/app/assets/javascripts/rich-multiselect/plugins/localisation/jquery.localisation-pack.js +7 -0
  88. data/app/assets/javascripts/rich-multiselect/plugins/localisation/jquery.localisation.js +99 -0
  89. data/app/assets/javascripts/rich-multiselect/plugins/scrollTo/README.txt +37 -0
  90. data/app/assets/javascripts/rich-multiselect/plugins/scrollTo/changes.txt +82 -0
  91. data/app/assets/javascripts/rich-multiselect/plugins/scrollTo/jquery.scrollTo-min.js +11 -0
  92. data/app/assets/javascripts/rich-multiselect/plugins/scrollTo/jquery.scrollTo.js +207 -0
  93. data/app/assets/javascripts/rich-multiselect/ui.multiselect.js +339 -0
  94. data/app/assets/stylesheets/carrier.css +227 -0
  95. data/app/assets/stylesheets/carrier_rich.css +48 -0
  96. data/app/assets/stylesheets/carrier_simple.css +15 -0
  97. data/app/assets/stylesheets/rich-multiselect/ui.multiselect.css +30 -0
  98. data/app/assets/stylesheets/ui-lightness/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  99. data/app/assets/stylesheets/ui-lightness/images/ui-bg_flat_55_fbf9ee_40x100.png +0 -0
  100. data/app/assets/stylesheets/ui-lightness/images/ui-bg_flat_65_ffffff_40x100.png +0 -0
  101. data/app/assets/stylesheets/ui-lightness/images/ui-bg_flat_75_cccccc_40x100.png +0 -0
  102. data/app/assets/stylesheets/ui-lightness/images/ui-bg_flat_75_dadada_40x100.png +0 -0
  103. data/app/assets/stylesheets/ui-lightness/images/ui-bg_flat_75_e6e6e6_40x100.png +0 -0
  104. data/app/assets/stylesheets/ui-lightness/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
  105. data/app/assets/stylesheets/ui-lightness/images/ui-bg_flat_95_fef1ec_40x100.png +0 -0
  106. data/app/assets/stylesheets/ui-lightness/images/ui-icons_222222_256x240.png +0 -0
  107. data/app/assets/stylesheets/ui-lightness/images/ui-icons_2e83ff_256x240.png +0 -0
  108. data/app/assets/stylesheets/ui-lightness/images/ui-icons_454545_256x240.png +0 -0
  109. data/app/assets/stylesheets/ui-lightness/images/ui-icons_888888_256x240.png +0 -0
  110. data/app/assets/stylesheets/ui-lightness/images/ui-icons_cd0a0a_256x240.png +0 -0
  111. data/app/assets/stylesheets/ui-lightness/jquery-ui-1.8.14.custom.css +342 -0
  112. data/app/controllers/carrier/application_controller.rb +5 -0
  113. data/app/controllers/carrier/chains_controller.rb +16 -0
  114. data/app/controllers/carrier/messages_controller.rb +59 -0
  115. data/app/helpers/carrier/application_helper.rb +26 -0
  116. data/app/helpers/carrier/post_helper.rb +4 -0
  117. data/app/models/carrier/chain.rb +59 -0
  118. data/app/models/carrier/message.rb +118 -0
  119. data/app/models/carrier/message/scopes.rb +51 -0
  120. data/app/models/carrier/message/subject.rb +25 -0
  121. data/app/models/carrier/message/validations.rb +7 -0
  122. data/app/validators/recipients/exclude_self.rb +10 -0
  123. data/app/validators/recipients/recipients_validator.rb +10 -0
  124. data/app/views/carrier/chains/archive.js.erb +1 -0
  125. data/app/views/carrier/chains/unarchive.js.erb +1 -0
  126. data/app/views/carrier/messages/_archive_chain.html.erb +6 -0
  127. data/app/views/carrier/messages/_form.html.erb +30 -0
  128. data/app/views/carrier/messages/_head.html.erb +8 -0
  129. data/app/views/carrier/messages/_index_message.html.erb +13 -0
  130. data/app/views/carrier/messages/_message_collapsed.html.erb +12 -0
  131. data/app/views/carrier/messages/_message_expanded.html.erb +10 -0
  132. data/app/views/carrier/messages/_nav_messages.html.erb +15 -0
  133. data/app/views/carrier/messages/_reply.html.erb +19 -0
  134. data/app/views/carrier/messages/as_sent.html.erb +36 -0
  135. data/app/views/carrier/messages/collapsed.js.erb +1 -0
  136. data/app/views/carrier/messages/create.js.erb +1 -0
  137. data/app/views/carrier/messages/expanded.js.erb +1 -0
  138. data/app/views/carrier/messages/index.html.erb +9 -0
  139. data/app/views/carrier/messages/new.html.erb +7 -0
  140. data/app/views/carrier/messages/new.js.erb +1 -0
  141. data/app/views/carrier/messages/reply.js.erb +6 -0
  142. data/app/views/carrier/messages/rich/_multiselect.html.erb +18 -0
  143. data/app/views/carrier/messages/rich/_recipients.html.erb +6 -0
  144. data/app/views/carrier/messages/show.html.erb +35 -0
  145. data/app/views/carrier/messages/simple/_autocomplete.html.erb +45 -0
  146. data/app/views/carrier/messages/simple/_autocomplete_includes.html.erb +7 -0
  147. data/app/views/carrier/messages/simple/_recipients.html.erb +3 -0
  148. data/app/views/layouts/carrier/application.html.erb +16 -0
  149. data/app/views/partials/_error_messages_for.html.erb +9 -0
  150. data/carrier.gemspec +331 -0
  151. data/config/locales/carrier.en.yml +48 -0
  152. data/config/locales/carrier.ru.yml +48 -0
  153. data/config/routes.rb +24 -0
  154. data/db/migrate/001_create_messages.rb +26 -0
  155. data/db/migrate/002_create_chains.rb +34 -0
  156. data/db/migrate/003_create_read_marks +16 -0
  157. data/lib/carrier.rb +22 -0
  158. data/lib/carrier/configuration.rb +35 -0
  159. data/lib/carrier/configuration/models.rb +31 -0
  160. data/lib/carrier/configuration/ui.rb +28 -0
  161. data/lib/carrier/rails.rb +5 -0
  162. data/lib/carrier/rails/engine.rb +50 -0
  163. data/lib/carrier/rails/helpers.rb +30 -0
  164. data/lib/tasks/carrier_tasks.rake +4 -0
  165. data/script/rails +6 -0
  166. data/spec/carrier/app/controllers/application_controller_spec.rb +1 -0
  167. data/spec/carrier/app/models/message_scopes_spec.rb +25 -0
  168. data/spec/carrier/app/models/message_spec.rb +38 -0
  169. data/spec/dummy/Rakefile +7 -0
  170. data/spec/dummy/app/assets/javascripts/application.js +9 -0
  171. data/spec/dummy/app/assets/javascripts/default.js +2 -0
  172. data/spec/dummy/app/assets/javascripts/jquery.js +16 -0
  173. data/spec/dummy/app/assets/javascripts/jquery_ujs.js +169 -0
  174. data/spec/dummy/app/assets/javascripts/posts.js +2 -0
  175. data/spec/dummy/app/assets/stylesheets/application.css +7 -0
  176. data/spec/dummy/app/assets/stylesheets/default.css +4 -0
  177. data/spec/dummy/app/assets/stylesheets/posts.css +4 -0
  178. data/spec/dummy/app/assets/stylesheets/scaffold.css +56 -0
  179. data/spec/dummy/app/controllers/application_controller.rb +5 -0
  180. data/spec/dummy/app/controllers/default_controller.rb +5 -0
  181. data/spec/dummy/app/controllers/posts_controller.rb +83 -0
  182. data/spec/dummy/app/helpers/application_helper.rb +2 -0
  183. data/spec/dummy/app/helpers/default_helper.rb +2 -0
  184. data/spec/dummy/app/helpers/posts_helper.rb +2 -0
  185. data/spec/dummy/app/mailers/.gitkeep +0 -0
  186. data/spec/dummy/app/models/.gitkeep +0 -0
  187. data/spec/dummy/app/models/post.rb +2 -0
  188. data/spec/dummy/app/models/user.rb +15 -0
  189. data/spec/dummy/app/views/default/index.html.erb +4 -0
  190. data/spec/dummy/app/views/devise/confirmations/new.html.erb +12 -0
  191. data/spec/dummy/app/views/devise/mailer/confirmation_instructions.html.erb +5 -0
  192. data/spec/dummy/app/views/devise/mailer/reset_password_instructions.html.erb +8 -0
  193. data/spec/dummy/app/views/devise/mailer/unlock_instructions.html.erb +7 -0
  194. data/spec/dummy/app/views/devise/passwords/edit.html.erb +16 -0
  195. data/spec/dummy/app/views/devise/passwords/new.html.erb +12 -0
  196. data/spec/dummy/app/views/devise/registrations/edit.html.erb +25 -0
  197. data/spec/dummy/app/views/devise/registrations/new.html.erb +18 -0
  198. data/spec/dummy/app/views/devise/sessions/new.html.erb +17 -0
  199. data/spec/dummy/app/views/devise/shared/_links.erb +25 -0
  200. data/spec/dummy/app/views/devise/unlocks/new.html.erb +12 -0
  201. data/spec/dummy/app/views/layouts/application.html.erb +16 -0
  202. data/spec/dummy/app/views/posts/_form.html.erb +17 -0
  203. data/spec/dummy/app/views/posts/edit.html.erb +6 -0
  204. data/spec/dummy/app/views/posts/index.html.erb +21 -0
  205. data/spec/dummy/app/views/posts/new.html.erb +5 -0
  206. data/spec/dummy/app/views/posts/show.html.erb +5 -0
  207. data/spec/dummy/config.ru +4 -0
  208. data/spec/dummy/config/application.rb +51 -0
  209. data/spec/dummy/config/boot.rb +10 -0
  210. data/spec/dummy/config/database.yml +26 -0
  211. data/spec/dummy/config/database_mysql.yml +29 -0
  212. data/spec/dummy/config/database_pgsql.yml +35 -0
  213. data/spec/dummy/config/environment.rb +5 -0
  214. data/spec/dummy/config/environments/development.rb +24 -0
  215. data/spec/dummy/config/environments/production.rb +52 -0
  216. data/spec/dummy/config/environments/test.rb +39 -0
  217. data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
  218. data/spec/dummy/config/initializers/carrier.rb +3 -0
  219. data/spec/dummy/config/initializers/devise.rb +204 -0
  220. data/spec/dummy/config/initializers/inflections.rb +10 -0
  221. data/spec/dummy/config/initializers/mime_types.rb +5 -0
  222. data/spec/dummy/config/initializers/secret_token.rb +7 -0
  223. data/spec/dummy/config/initializers/session_store.rb +8 -0
  224. data/spec/dummy/config/initializers/wrap_parameters.rb +12 -0
  225. data/spec/dummy/config/locales/devise.en.yml +53 -0
  226. data/spec/dummy/config/locales/en.yml +5 -0
  227. data/spec/dummy/config/routes.rb +15 -0
  228. data/spec/dummy/db/migrate/007_devise_create_users.rb +29 -0
  229. data/spec/dummy/db/migrate/20110130210000_create_read_marks.rb +16 -0
  230. data/spec/dummy/db/migrate/20110814064637_create_posts.rb +8 -0
  231. data/spec/dummy/db/migrate/20110814164228_create_messages.rb +26 -0
  232. data/spec/dummy/db/migrate/20110814164229_create_chains.rb +34 -0
  233. data/spec/dummy/db/schema.rb +79 -0
  234. data/spec/dummy/db/seeds.rb +26 -0
  235. data/spec/dummy/log/.gitkeep +0 -0
  236. data/spec/dummy/public/404.html +26 -0
  237. data/spec/dummy/public/422.html +26 -0
  238. data/spec/dummy/public/500.html +26 -0
  239. data/spec/dummy/public/favicon.ico +0 -0
  240. data/spec/dummy/script/rails +6 -0
  241. data/spec/dummy/test/fixtures/posts.yml +11 -0
  242. data/spec/dummy/test/fixtures/users.yml +11 -0
  243. data/spec/dummy/test/functional/default_controller_test.rb +9 -0
  244. data/spec/dummy/test/functional/posts_controller_test.rb +49 -0
  245. data/spec/dummy/test/unit/helpers/default_helper_test.rb +4 -0
  246. data/spec/dummy/test/unit/helpers/posts_helper_test.rb +4 -0
  247. data/spec/dummy/test/unit/post_test.rb +7 -0
  248. data/spec/dummy/test/unit/user_test.rb +7 -0
  249. data/spec/dummy_spec_helper.rb +70 -0
  250. data/spec/integration/carrier_spec.rb +71 -0
  251. data/spec/requests/main_spec.rb +31 -0
  252. data/spec/support/controller_macros.rb +10 -0
  253. data/spec/support/factories.rb +47 -0
  254. data/spec/support/rspec_helpers.rb +22 -0
  255. data/test/helper.rb +18 -0
  256. data/test/test_carrier.rb +7 -0
  257. metadata +450 -0
@@ -0,0 +1,7 @@
1
+ require 'test_helper'
2
+
3
+ class UserTest < ActiveSupport::TestCase
4
+ # test "the truth" do
5
+ # assert true
6
+ # end
7
+ end
@@ -0,0 +1,70 @@
1
+ $:.unshift File.dirname(__FILE__)
2
+ require 'rubygems'
3
+
4
+ ENV["RAILS_ENV"] ||= 'test'
5
+
6
+ require File.expand_path("../dummy/config/environment", __FILE__)
7
+ require 'require_all'
8
+ require 'rspec/rails'
9
+ require 'cutter'
10
+ require 'capybara/rails'
11
+ require 'capybara/rspec'
12
+ require 'shoulda'
13
+ require 'factory_girl'
14
+
15
+ require_all File.expand_path('../support', __FILE__)
16
+
17
+ #ActiveRecord::Base.logger = Logger.new(STDERR)
18
+ def load_seeds
19
+ load File.join(Rails.root, "db/seeds.rb")
20
+ end
21
+
22
+
23
+ class ActiveRecord::Base
24
+ mattr_accessor :shared_connection
25
+ @@shared_connection = nil
26
+
27
+ def self.connection
28
+ @@shared_connection || retrieve_connection
29
+ end
30
+ end
31
+
32
+ # Forces all threads to share the same connection. This works on
33
+ # Capybara because it starts the web server in a thread.
34
+ ActiveRecord::Base.shared_connection = ActiveRecord::Base.connection
35
+
36
+ RSpec.configure do |config|
37
+ config.include Warden::Test::Helpers, :type => :request
38
+ config.after(:each, :type => :request) {Warden.test_reset!}
39
+
40
+ config.mock_with :rspec
41
+
42
+ config.include Factory::Syntax::Methods
43
+
44
+ config.use_transactional_fixtures = true
45
+
46
+ config.before(:suite) do
47
+ with ActiveRecord::Base.connection do
48
+ tables.map do |table|
49
+ drop_table table
50
+ end
51
+ end
52
+
53
+ with ActiveRecord::Migrator do
54
+ migrate File.expand_path('../dummy/db/migrate', __FILE__)
55
+ end
56
+ end
57
+
58
+ config.before(:each) do
59
+ tables_to_truncate = %w|messages chains users|
60
+
61
+ with ActiveRecord::Base.connection do
62
+ (tables & tables_to_truncate).map do |table|
63
+ #execute "TRUNCATE #{table}"
64
+ end
65
+ end
66
+
67
+ end
68
+
69
+ end
70
+
@@ -0,0 +1,71 @@
1
+ # encoding: UTF-8
2
+
3
+ require 'dummy_spec_helper'
4
+
5
+ module DeviseSessionHelpers
6
+ def login_with email, password
7
+ fill_in "Email", :with => email
8
+ fill_in "Password", :with => password
9
+ click_button "Sign in"
10
+ end
11
+
12
+ def login_user
13
+ visit new_user_session_path
14
+ login_with 'stanislaw@gmail.com', "666666"
15
+ end
16
+ end
17
+
18
+ feature "Carrier", %q{
19
+ In order to have github-like messaging functionality
20
+ As an user
21
+ I want to do create, receive, list and archive messages} do
22
+
23
+ background do
24
+ Capybara.reset_sessions!
25
+ load_seeds
26
+
27
+ login_user
28
+ end
29
+
30
+ include DeviseSessionHelpers
31
+
32
+ scenario "Inbox: listing messages" do
33
+ visit '/carrier/messages'
34
+
35
+ page.should_not have_content("message#1")
36
+ page.should have_content("message#2")
37
+ page.should_not have_content("message#3")
38
+ page.should have_content("message#4")
39
+ end
40
+
41
+ scenario "Sent: listing messages" do
42
+ visit '/carrier/messages/sent'
43
+ page.should_not have_content("message#1")
44
+ page.should have_content("message#2")
45
+ page.should have_content("message#3")
46
+ page.should_not have_content("message#4")
47
+ end
48
+
49
+ scenario "Creating a message" do
50
+ visit "/carrier/messages"
51
+ click_link "New"
52
+
53
+ fill_in "Recipients", :with => "marixa, miloviza"
54
+ fill_in "Subject", :with => "Тема тестового сообщения"
55
+ fill_in "Message", :with => "тестовое сообщение"
56
+
57
+ click_button("Send")
58
+
59
+ page.should have_content("marixa")
60
+ page.should have_content("miloviza")
61
+ page.should have_content("Reply into thread")
62
+ end
63
+
64
+ scenario "Archiving a message", :js => true do
65
+ visit "/carrier/messages/#{Carrier::Message.last.id}"
66
+ click_link "Archive!"
67
+
68
+ page.should have_content("Unarchive?")
69
+ end
70
+ end
71
+
@@ -0,0 +1,31 @@
1
+ require 'dummy_spec_helper'
2
+
3
+ describe "Requests" do
4
+
5
+ describe "Main pages" do
6
+ before do
7
+ login_as(create(:user))
8
+ end
9
+
10
+ it "should get root" do
11
+ get '/carrier'
12
+ response.status.should be(200)
13
+ end
14
+
15
+ it "should get /messages" do
16
+ get '/carrier/messages'
17
+ response.status.should be(200)
18
+ end
19
+
20
+ it "should get /sent" do
21
+ get '/carrier/messages/sent'
22
+ response.status.should be(200)
23
+ end
24
+
25
+ it "should get /archive" do
26
+ get '/carrier/messages/archive'
27
+ response.status.should be(200)
28
+ end
29
+
30
+ end
31
+ end
@@ -0,0 +1,10 @@
1
+ module ControllerMacros
2
+ def login_user
3
+ before(:each) do
4
+ @request.env["devise.mapping"] = :user
5
+ sign_in Factory(:user) #@admin
6
+ end
7
+ end
8
+
9
+ end
10
+
@@ -0,0 +1,47 @@
1
+ FactoryGirl.define do
2
+ factory :first_message, :class => Carrier::Message do
3
+ id 1
4
+ association :sender_user, :factory => :user
5
+ recipients [2, 3]
6
+ content "Hello!"
7
+ subject "FirstMessage"
8
+ association :chain, :factory => :chain
9
+ end
10
+
11
+ factory :second_message, :class => Carrier::Message do
12
+ id 2
13
+ association :sender_user, :factory => :user_second
14
+ recipients [3, 1]
15
+ content "Hello you too!"
16
+ subject "SecondMessage"
17
+ association :chain, :factory => :chain
18
+ end
19
+
20
+ factory :user do
21
+ id 1
22
+ username "stanisla"
23
+ email "stanisla@gmail.com"
24
+ password "666666"
25
+ password_confirmation "666666"
26
+ end
27
+
28
+ factory :user_second, :class => User do
29
+ id 2
30
+ username "marixa"
31
+ email "marixa@gmail.com"
32
+ password "666666"
33
+ password_confirmation "666666"
34
+ end
35
+
36
+ factory :user_third, :class => User do
37
+ id 3
38
+ username "miloviza"
39
+ email "miloviza@gmail.com"
40
+ password "666666"
41
+ password_confirmation "666666"
42
+ end
43
+
44
+ factory :chain, :class => Carrier::Chain do
45
+ end
46
+ end
47
+
@@ -0,0 +1,22 @@
1
+
2
+ module RSpec
3
+ module Core
4
+ class ExampleGroup
5
+
6
+ class << self
7
+ alias_method :concern, :describe if instance_methods.include?(:describe)
8
+
9
+ def register_concern
10
+ alias_method :concern, :describe if instance_methods.include?(:describe)
11
+ end
12
+
13
+ def singleton_method_added name
14
+ class << self
15
+ undef_method :register_concern
16
+ end if name == :describe
17
+ end
18
+
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,18 @@
1
+ require 'rubygems'
2
+ require 'bundler'
3
+ begin
4
+ Bundler.setup(:default, :development)
5
+ rescue Bundler::BundlerError => e
6
+ $stderr.puts e.message
7
+ $stderr.puts "Run `bundle install` to install missing gems"
8
+ exit e.status_code
9
+ end
10
+ require 'test/unit'
11
+ require 'shoulda'
12
+
13
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
14
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
15
+ require 'carrier'
16
+
17
+ class Test::Unit::TestCase
18
+ end
@@ -0,0 +1,7 @@
1
+ require 'helper'
2
+
3
+ class TestCarrier < Test::Unit::TestCase
4
+ should "probably rename this file and start testing for real" do
5
+ flunk "hey buddy, you should probably rename this file and start testing for real"
6
+ end
7
+ end
metadata ADDED
@@ -0,0 +1,450 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: carrier
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.6
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - stanislaw
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2011-11-15 00:00:00.000000000Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: require_all
16
+ requirement: &76393070 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: *76393070
25
+ - !ruby/object:Gem::Dependency
26
+ name: kaminari
27
+ requirement: &76392020 !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: *76392020
36
+ - !ruby/object:Gem::Dependency
37
+ name: unread
38
+ requirement: &76391520 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ! '>='
42
+ - !ruby/object:Gem::Version
43
+ version: '0'
44
+ type: :runtime
45
+ prerelease: false
46
+ version_requirements: *76391520
47
+ - !ruby/object:Gem::Dependency
48
+ name: sugar-high
49
+ requirement: &76391030 !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ type: :runtime
56
+ prerelease: false
57
+ version_requirements: *76391030
58
+ - !ruby/object:Gem::Dependency
59
+ name: sweetloader
60
+ requirement: &76390550 !ruby/object:Gem::Requirement
61
+ none: false
62
+ requirements:
63
+ - - ! '>='
64
+ - !ruby/object:Gem::Version
65
+ version: '0'
66
+ type: :runtime
67
+ prerelease: false
68
+ version_requirements: *76390550
69
+ - !ruby/object:Gem::Dependency
70
+ name: rails
71
+ requirement: &76390010 !ruby/object:Gem::Requirement
72
+ none: false
73
+ requirements:
74
+ - - ! '>='
75
+ - !ruby/object:Gem::Version
76
+ version: 3.1.0
77
+ type: :development
78
+ prerelease: false
79
+ version_requirements: *76390010
80
+ - !ruby/object:Gem::Dependency
81
+ name: unicorn
82
+ requirement: &76389650 !ruby/object:Gem::Requirement
83
+ none: false
84
+ requirements:
85
+ - - ! '>='
86
+ - !ruby/object:Gem::Version
87
+ version: '0'
88
+ type: :development
89
+ prerelease: false
90
+ version_requirements: *76389650
91
+ - !ruby/object:Gem::Dependency
92
+ name: mysql2
93
+ requirement: &76389190 !ruby/object:Gem::Requirement
94
+ none: false
95
+ requirements:
96
+ - - ! '>='
97
+ - !ruby/object:Gem::Version
98
+ version: '0'
99
+ type: :development
100
+ prerelease: false
101
+ version_requirements: *76389190
102
+ - !ruby/object:Gem::Dependency
103
+ name: devise
104
+ requirement: &76388720 !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ! '>='
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
110
+ type: :development
111
+ prerelease: false
112
+ version_requirements: *76388720
113
+ - !ruby/object:Gem::Dependency
114
+ name: rake-kit
115
+ requirement: &76388350 !ruby/object:Gem::Requirement
116
+ none: false
117
+ requirements:
118
+ - - ! '>='
119
+ - !ruby/object:Gem::Version
120
+ version: '0'
121
+ type: :development
122
+ prerelease: false
123
+ version_requirements: *76388350
124
+ - !ruby/object:Gem::Dependency
125
+ name: cutter
126
+ requirement: &76387830 !ruby/object:Gem::Requirement
127
+ none: false
128
+ requirements:
129
+ - - ! '>='
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: *76387830
135
+ - !ruby/object:Gem::Dependency
136
+ name: jeweler
137
+ requirement: &76387220 !ruby/object:Gem::Requirement
138
+ none: false
139
+ requirements:
140
+ - - ! '>='
141
+ - !ruby/object:Gem::Version
142
+ version: 1.6.4
143
+ type: :development
144
+ prerelease: false
145
+ version_requirements: *76387220
146
+ - !ruby/object:Gem::Dependency
147
+ name: rspec-rails
148
+ requirement: &76340560 !ruby/object:Gem::Requirement
149
+ none: false
150
+ requirements:
151
+ - - ! '>='
152
+ - !ruby/object:Gem::Version
153
+ version: '2.5'
154
+ type: :development
155
+ prerelease: false
156
+ version_requirements: *76340560
157
+ description: Raw github-like messaging system to reuse across Rails apps. Acts as
158
+ Rails 3.1 mountable engine. Fast and robust.
159
+ email: s.pankevich@gmail.com
160
+ executables: []
161
+ extensions: []
162
+ extra_rdoc_files:
163
+ - LICENSE.txt
164
+ - README.textile
165
+ files:
166
+ - .document
167
+ - .rspec
168
+ - Gemfile
169
+ - LICENSE.txt
170
+ - MIT-LICENSE
171
+ - README.textile
172
+ - Rakefile
173
+ - VERSION
174
+ - app/assets/images/.gitkeep
175
+ - app/assets/javascripts/autocomplete.js
176
+ - app/assets/javascripts/autocomplete/i18n/jquery-ui-i18n.js
177
+ - app/assets/javascripts/autocomplete/i18n/jquery.ui.datepicker-af.js
178
+ - app/assets/javascripts/autocomplete/i18n/jquery.ui.datepicker-ar-DZ.js
179
+ - app/assets/javascripts/autocomplete/i18n/jquery.ui.datepicker-ar.js
180
+ - app/assets/javascripts/autocomplete/i18n/jquery.ui.datepicker-az.js
181
+ - app/assets/javascripts/autocomplete/i18n/jquery.ui.datepicker-bg.js
182
+ - app/assets/javascripts/autocomplete/i18n/jquery.ui.datepicker-bs.js
183
+ - app/assets/javascripts/autocomplete/i18n/jquery.ui.datepicker-ca.js
184
+ - app/assets/javascripts/autocomplete/i18n/jquery.ui.datepicker-cs.js
185
+ - app/assets/javascripts/autocomplete/i18n/jquery.ui.datepicker-da.js
186
+ - app/assets/javascripts/autocomplete/i18n/jquery.ui.datepicker-de.js
187
+ - app/assets/javascripts/autocomplete/i18n/jquery.ui.datepicker-el.js
188
+ - app/assets/javascripts/autocomplete/i18n/jquery.ui.datepicker-en-AU.js
189
+ - app/assets/javascripts/autocomplete/i18n/jquery.ui.datepicker-en-GB.js
190
+ - app/assets/javascripts/autocomplete/i18n/jquery.ui.datepicker-en-NZ.js
191
+ - app/assets/javascripts/autocomplete/i18n/jquery.ui.datepicker-eo.js
192
+ - app/assets/javascripts/autocomplete/i18n/jquery.ui.datepicker-es.js
193
+ - app/assets/javascripts/autocomplete/i18n/jquery.ui.datepicker-et.js
194
+ - app/assets/javascripts/autocomplete/i18n/jquery.ui.datepicker-eu.js
195
+ - app/assets/javascripts/autocomplete/i18n/jquery.ui.datepicker-fa.js
196
+ - app/assets/javascripts/autocomplete/i18n/jquery.ui.datepicker-fi.js
197
+ - app/assets/javascripts/autocomplete/i18n/jquery.ui.datepicker-fo.js
198
+ - app/assets/javascripts/autocomplete/i18n/jquery.ui.datepicker-fr-CH.js
199
+ - app/assets/javascripts/autocomplete/i18n/jquery.ui.datepicker-fr.js
200
+ - app/assets/javascripts/autocomplete/i18n/jquery.ui.datepicker-gl.js
201
+ - app/assets/javascripts/autocomplete/i18n/jquery.ui.datepicker-he.js
202
+ - app/assets/javascripts/autocomplete/i18n/jquery.ui.datepicker-hr.js
203
+ - app/assets/javascripts/autocomplete/i18n/jquery.ui.datepicker-hu.js
204
+ - app/assets/javascripts/autocomplete/i18n/jquery.ui.datepicker-hy.js
205
+ - app/assets/javascripts/autocomplete/i18n/jquery.ui.datepicker-id.js
206
+ - app/assets/javascripts/autocomplete/i18n/jquery.ui.datepicker-is.js
207
+ - app/assets/javascripts/autocomplete/i18n/jquery.ui.datepicker-it.js
208
+ - app/assets/javascripts/autocomplete/i18n/jquery.ui.datepicker-ja.js
209
+ - app/assets/javascripts/autocomplete/i18n/jquery.ui.datepicker-ko.js
210
+ - app/assets/javascripts/autocomplete/i18n/jquery.ui.datepicker-kz.js
211
+ - app/assets/javascripts/autocomplete/i18n/jquery.ui.datepicker-lt.js
212
+ - app/assets/javascripts/autocomplete/i18n/jquery.ui.datepicker-lv.js
213
+ - app/assets/javascripts/autocomplete/i18n/jquery.ui.datepicker-ml.js
214
+ - app/assets/javascripts/autocomplete/i18n/jquery.ui.datepicker-ms.js
215
+ - app/assets/javascripts/autocomplete/i18n/jquery.ui.datepicker-nl.js
216
+ - app/assets/javascripts/autocomplete/i18n/jquery.ui.datepicker-no.js
217
+ - app/assets/javascripts/autocomplete/i18n/jquery.ui.datepicker-pl.js
218
+ - app/assets/javascripts/autocomplete/i18n/jquery.ui.datepicker-pt-BR.js
219
+ - app/assets/javascripts/autocomplete/i18n/jquery.ui.datepicker-pt.js
220
+ - app/assets/javascripts/autocomplete/i18n/jquery.ui.datepicker-rm.js
221
+ - app/assets/javascripts/autocomplete/i18n/jquery.ui.datepicker-ro.js
222
+ - app/assets/javascripts/autocomplete/i18n/jquery.ui.datepicker-ru.js
223
+ - app/assets/javascripts/autocomplete/i18n/jquery.ui.datepicker-sk.js
224
+ - app/assets/javascripts/autocomplete/i18n/jquery.ui.datepicker-sl.js
225
+ - app/assets/javascripts/autocomplete/i18n/jquery.ui.datepicker-sq.js
226
+ - app/assets/javascripts/autocomplete/i18n/jquery.ui.datepicker-sr-SR.js
227
+ - app/assets/javascripts/autocomplete/i18n/jquery.ui.datepicker-sr.js
228
+ - app/assets/javascripts/autocomplete/i18n/jquery.ui.datepicker-sv.js
229
+ - app/assets/javascripts/autocomplete/i18n/jquery.ui.datepicker-ta.js
230
+ - app/assets/javascripts/autocomplete/i18n/jquery.ui.datepicker-th.js
231
+ - app/assets/javascripts/autocomplete/i18n/jquery.ui.datepicker-tj.js
232
+ - app/assets/javascripts/autocomplete/i18n/jquery.ui.datepicker-tr.js
233
+ - app/assets/javascripts/autocomplete/i18n/jquery.ui.datepicker-uk.js
234
+ - app/assets/javascripts/autocomplete/i18n/jquery.ui.datepicker-vi.js
235
+ - app/assets/javascripts/autocomplete/i18n/jquery.ui.datepicker-zh-CN.js
236
+ - app/assets/javascripts/autocomplete/i18n/jquery.ui.datepicker-zh-HK.js
237
+ - app/assets/javascripts/autocomplete/i18n/jquery.ui.datepicker-zh-TW.js
238
+ - app/assets/javascripts/autocomplete/jquery.ui.autocomplete.min.js
239
+ - app/assets/javascripts/autocomplete/jquery.ui.core.min.js
240
+ - app/assets/javascripts/autocomplete/jquery.ui.position.min.js
241
+ - app/assets/javascripts/autocomplete/jquery.ui.widget.min.js
242
+ - app/assets/javascripts/carrier.js
243
+ - app/assets/javascripts/jquery.min.js
244
+ - app/assets/javascripts/rails.js
245
+ - app/assets/javascripts/rich-multiselect/jquery-ui.min.js
246
+ - app/assets/javascripts/rich-multiselect/locale/ui-multiselect-de.js
247
+ - app/assets/javascripts/rich-multiselect/locale/ui-multiselect-en.js
248
+ - app/assets/javascripts/rich-multiselect/locale/ui-multiselect-es.js
249
+ - app/assets/javascripts/rich-multiselect/locale/ui-multiselect-fr.js
250
+ - app/assets/javascripts/rich-multiselect/locale/ui-multiselect-it.js
251
+ - app/assets/javascripts/rich-multiselect/plugins/localisation/jquery.localisation-min.js
252
+ - app/assets/javascripts/rich-multiselect/plugins/localisation/jquery.localisation-pack.js
253
+ - app/assets/javascripts/rich-multiselect/plugins/localisation/jquery.localisation.js
254
+ - app/assets/javascripts/rich-multiselect/plugins/scrollTo/README.txt
255
+ - app/assets/javascripts/rich-multiselect/plugins/scrollTo/changes.txt
256
+ - app/assets/javascripts/rich-multiselect/plugins/scrollTo/jquery.scrollTo-min.js
257
+ - app/assets/javascripts/rich-multiselect/plugins/scrollTo/jquery.scrollTo.js
258
+ - app/assets/javascripts/rich-multiselect/ui.multiselect.js
259
+ - app/assets/stylesheets/carrier.css
260
+ - app/assets/stylesheets/carrier_rich.css
261
+ - app/assets/stylesheets/carrier_simple.css
262
+ - app/assets/stylesheets/rich-multiselect/ui.multiselect.css
263
+ - app/assets/stylesheets/ui-lightness/images/ui-bg_flat_0_aaaaaa_40x100.png
264
+ - app/assets/stylesheets/ui-lightness/images/ui-bg_flat_55_fbf9ee_40x100.png
265
+ - app/assets/stylesheets/ui-lightness/images/ui-bg_flat_65_ffffff_40x100.png
266
+ - app/assets/stylesheets/ui-lightness/images/ui-bg_flat_75_cccccc_40x100.png
267
+ - app/assets/stylesheets/ui-lightness/images/ui-bg_flat_75_dadada_40x100.png
268
+ - app/assets/stylesheets/ui-lightness/images/ui-bg_flat_75_e6e6e6_40x100.png
269
+ - app/assets/stylesheets/ui-lightness/images/ui-bg_flat_75_ffffff_40x100.png
270
+ - app/assets/stylesheets/ui-lightness/images/ui-bg_flat_95_fef1ec_40x100.png
271
+ - app/assets/stylesheets/ui-lightness/images/ui-icons_222222_256x240.png
272
+ - app/assets/stylesheets/ui-lightness/images/ui-icons_2e83ff_256x240.png
273
+ - app/assets/stylesheets/ui-lightness/images/ui-icons_454545_256x240.png
274
+ - app/assets/stylesheets/ui-lightness/images/ui-icons_888888_256x240.png
275
+ - app/assets/stylesheets/ui-lightness/images/ui-icons_cd0a0a_256x240.png
276
+ - app/assets/stylesheets/ui-lightness/jquery-ui-1.8.14.custom.css
277
+ - app/controllers/carrier/application_controller.rb
278
+ - app/controllers/carrier/chains_controller.rb
279
+ - app/controllers/carrier/messages_controller.rb
280
+ - app/helpers/carrier/application_helper.rb
281
+ - app/helpers/carrier/post_helper.rb
282
+ - app/models/carrier/chain.rb
283
+ - app/models/carrier/message.rb
284
+ - app/models/carrier/message/scopes.rb
285
+ - app/models/carrier/message/subject.rb
286
+ - app/models/carrier/message/validations.rb
287
+ - app/validators/recipients/exclude_self.rb
288
+ - app/validators/recipients/recipients_validator.rb
289
+ - app/views/carrier/chains/archive.js.erb
290
+ - app/views/carrier/chains/unarchive.js.erb
291
+ - app/views/carrier/messages/_archive_chain.html.erb
292
+ - app/views/carrier/messages/_form.html.erb
293
+ - app/views/carrier/messages/_head.html.erb
294
+ - app/views/carrier/messages/_index_message.html.erb
295
+ - app/views/carrier/messages/_message_collapsed.html.erb
296
+ - app/views/carrier/messages/_message_expanded.html.erb
297
+ - app/views/carrier/messages/_nav_messages.html.erb
298
+ - app/views/carrier/messages/_reply.html.erb
299
+ - app/views/carrier/messages/as_sent.html.erb
300
+ - app/views/carrier/messages/collapsed.js.erb
301
+ - app/views/carrier/messages/create.js.erb
302
+ - app/views/carrier/messages/expanded.js.erb
303
+ - app/views/carrier/messages/index.html.erb
304
+ - app/views/carrier/messages/new.html.erb
305
+ - app/views/carrier/messages/new.js.erb
306
+ - app/views/carrier/messages/reply.js.erb
307
+ - app/views/carrier/messages/rich/_multiselect.html.erb
308
+ - app/views/carrier/messages/rich/_recipients.html.erb
309
+ - app/views/carrier/messages/show.html.erb
310
+ - app/views/carrier/messages/simple/_autocomplete.html.erb
311
+ - app/views/carrier/messages/simple/_autocomplete_includes.html.erb
312
+ - app/views/carrier/messages/simple/_recipients.html.erb
313
+ - app/views/layouts/carrier/application.html.erb
314
+ - app/views/partials/_error_messages_for.html.erb
315
+ - carrier.gemspec
316
+ - config/locales/carrier.en.yml
317
+ - config/locales/carrier.ru.yml
318
+ - config/routes.rb
319
+ - db/migrate/001_create_messages.rb
320
+ - db/migrate/002_create_chains.rb
321
+ - db/migrate/003_create_read_marks
322
+ - lib/carrier.rb
323
+ - lib/carrier/configuration.rb
324
+ - lib/carrier/configuration/models.rb
325
+ - lib/carrier/configuration/ui.rb
326
+ - lib/carrier/rails.rb
327
+ - lib/carrier/rails/engine.rb
328
+ - lib/carrier/rails/helpers.rb
329
+ - lib/tasks/carrier_tasks.rake
330
+ - script/rails
331
+ - spec/carrier/app/controllers/application_controller_spec.rb
332
+ - spec/carrier/app/models/message_scopes_spec.rb
333
+ - spec/carrier/app/models/message_spec.rb
334
+ - spec/dummy/Rakefile
335
+ - spec/dummy/app/assets/javascripts/application.js
336
+ - spec/dummy/app/assets/javascripts/default.js
337
+ - spec/dummy/app/assets/javascripts/jquery.js
338
+ - spec/dummy/app/assets/javascripts/jquery_ujs.js
339
+ - spec/dummy/app/assets/javascripts/posts.js
340
+ - spec/dummy/app/assets/stylesheets/application.css
341
+ - spec/dummy/app/assets/stylesheets/default.css
342
+ - spec/dummy/app/assets/stylesheets/posts.css
343
+ - spec/dummy/app/assets/stylesheets/scaffold.css
344
+ - spec/dummy/app/controllers/application_controller.rb
345
+ - spec/dummy/app/controllers/default_controller.rb
346
+ - spec/dummy/app/controllers/posts_controller.rb
347
+ - spec/dummy/app/helpers/application_helper.rb
348
+ - spec/dummy/app/helpers/default_helper.rb
349
+ - spec/dummy/app/helpers/posts_helper.rb
350
+ - spec/dummy/app/mailers/.gitkeep
351
+ - spec/dummy/app/models/.gitkeep
352
+ - spec/dummy/app/models/post.rb
353
+ - spec/dummy/app/models/user.rb
354
+ - spec/dummy/app/views/default/index.html.erb
355
+ - spec/dummy/app/views/devise/confirmations/new.html.erb
356
+ - spec/dummy/app/views/devise/mailer/confirmation_instructions.html.erb
357
+ - spec/dummy/app/views/devise/mailer/reset_password_instructions.html.erb
358
+ - spec/dummy/app/views/devise/mailer/unlock_instructions.html.erb
359
+ - spec/dummy/app/views/devise/passwords/edit.html.erb
360
+ - spec/dummy/app/views/devise/passwords/new.html.erb
361
+ - spec/dummy/app/views/devise/registrations/edit.html.erb
362
+ - spec/dummy/app/views/devise/registrations/new.html.erb
363
+ - spec/dummy/app/views/devise/sessions/new.html.erb
364
+ - spec/dummy/app/views/devise/shared/_links.erb
365
+ - spec/dummy/app/views/devise/unlocks/new.html.erb
366
+ - spec/dummy/app/views/layouts/application.html.erb
367
+ - spec/dummy/app/views/posts/_form.html.erb
368
+ - spec/dummy/app/views/posts/edit.html.erb
369
+ - spec/dummy/app/views/posts/index.html.erb
370
+ - spec/dummy/app/views/posts/new.html.erb
371
+ - spec/dummy/app/views/posts/show.html.erb
372
+ - spec/dummy/config.ru
373
+ - spec/dummy/config/application.rb
374
+ - spec/dummy/config/boot.rb
375
+ - spec/dummy/config/database.yml
376
+ - spec/dummy/config/database_mysql.yml
377
+ - spec/dummy/config/database_pgsql.yml
378
+ - spec/dummy/config/environment.rb
379
+ - spec/dummy/config/environments/development.rb
380
+ - spec/dummy/config/environments/production.rb
381
+ - spec/dummy/config/environments/test.rb
382
+ - spec/dummy/config/initializers/backtrace_silencers.rb
383
+ - spec/dummy/config/initializers/carrier.rb
384
+ - spec/dummy/config/initializers/devise.rb
385
+ - spec/dummy/config/initializers/inflections.rb
386
+ - spec/dummy/config/initializers/mime_types.rb
387
+ - spec/dummy/config/initializers/secret_token.rb
388
+ - spec/dummy/config/initializers/session_store.rb
389
+ - spec/dummy/config/initializers/wrap_parameters.rb
390
+ - spec/dummy/config/locales/devise.en.yml
391
+ - spec/dummy/config/locales/en.yml
392
+ - spec/dummy/config/routes.rb
393
+ - spec/dummy/db/migrate/007_devise_create_users.rb
394
+ - spec/dummy/db/migrate/20110130210000_create_read_marks.rb
395
+ - spec/dummy/db/migrate/20110814064637_create_posts.rb
396
+ - spec/dummy/db/migrate/20110814164228_create_messages.rb
397
+ - spec/dummy/db/migrate/20110814164229_create_chains.rb
398
+ - spec/dummy/db/schema.rb
399
+ - spec/dummy/db/seeds.rb
400
+ - spec/dummy/log/.gitkeep
401
+ - spec/dummy/public/404.html
402
+ - spec/dummy/public/422.html
403
+ - spec/dummy/public/500.html
404
+ - spec/dummy/public/favicon.ico
405
+ - spec/dummy/script/rails
406
+ - spec/dummy/test/fixtures/posts.yml
407
+ - spec/dummy/test/fixtures/users.yml
408
+ - spec/dummy/test/functional/default_controller_test.rb
409
+ - spec/dummy/test/functional/posts_controller_test.rb
410
+ - spec/dummy/test/unit/helpers/default_helper_test.rb
411
+ - spec/dummy/test/unit/helpers/posts_helper_test.rb
412
+ - spec/dummy/test/unit/post_test.rb
413
+ - spec/dummy/test/unit/user_test.rb
414
+ - spec/dummy_spec_helper.rb
415
+ - spec/integration/carrier_spec.rb
416
+ - spec/requests/main_spec.rb
417
+ - spec/support/controller_macros.rb
418
+ - spec/support/factories.rb
419
+ - spec/support/rspec_helpers.rb
420
+ - test/helper.rb
421
+ - test/test_carrier.rb
422
+ homepage: http://github.com/stanislaw/carrier
423
+ licenses:
424
+ - MIT
425
+ post_install_message:
426
+ rdoc_options: []
427
+ require_paths:
428
+ - lib
429
+ required_ruby_version: !ruby/object:Gem::Requirement
430
+ none: false
431
+ requirements:
432
+ - - ! '>='
433
+ - !ruby/object:Gem::Version
434
+ version: '0'
435
+ segments:
436
+ - 0
437
+ hash: -859768031
438
+ required_rubygems_version: !ruby/object:Gem::Requirement
439
+ none: false
440
+ requirements:
441
+ - - ! '>='
442
+ - !ruby/object:Gem::Version
443
+ version: '0'
444
+ requirements: []
445
+ rubyforge_project:
446
+ rubygems_version: 1.8.11
447
+ signing_key:
448
+ specification_version: 3
449
+ summary: Raw github-like messaging system to reuse across Rails apps
450
+ test_files: []