carrier 0.0.6

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.
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: []