cells 3.11.3 → 4.0.0.beta1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (204) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -1
  3. data/.travis.yml +15 -13
  4. data/Appraisals +23 -0
  5. data/CHANGES.md +20 -3
  6. data/Gemfile +5 -7
  7. data/README.md +317 -236
  8. data/Rakefile +1 -1
  9. data/TODO.md +3 -0
  10. data/cells.gemspec +19 -28
  11. data/gemfiles/rails3.2.gemfile +14 -0
  12. data/gemfiles/rails4.0.gemfile +14 -0
  13. data/gemfiles/rails4.1.gemfile +15 -0
  14. data/gemfiles/rails4.2.gemfile +14 -0
  15. data/lib/cell.rb +28 -21
  16. data/lib/cell/caching.rb +10 -22
  17. data/lib/cell/caching/notification.rb +15 -0
  18. data/lib/cell/concept.rb +4 -69
  19. data/lib/cell/development.rb +11 -0
  20. data/lib/{cells → cell}/engines.rb +1 -1
  21. data/lib/cell/layout.rb +20 -0
  22. data/lib/cell/partial.rb +17 -0
  23. data/lib/cell/{base/prefixes.rb → prefixes.rb} +1 -1
  24. data/lib/cell/rails.rb +58 -50
  25. data/lib/cell/railtie.rb +60 -0
  26. data/lib/cell/{base/self_contained.rb → self_contained.rb} +1 -1
  27. data/lib/cell/templates.rb +60 -0
  28. data/lib/cell/test_case.rb +4 -162
  29. data/lib/cell/testing.rb +15 -0
  30. data/lib/cell/twin.rb +11 -29
  31. data/lib/cell/version.rb +10 -0
  32. data/lib/cell/view_model.rb +196 -88
  33. data/lib/cells.rb +1 -20
  34. data/lib/rails/generators/cell/cell_generator.rb +43 -0
  35. data/lib/rails/generators/cell/templates/cell.rb.erb +8 -0
  36. data/lib/{generators/templates/concept → rails/generators/cell/templates}/view.erb +0 -0
  37. data/lib/{generators/templates/concept → rails/generators/cell/templates}/view.haml +0 -0
  38. data/lib/rails/generators/cell/templates/view.slim +2 -0
  39. data/lib/rails/generators/concept/concept_generator.rb +38 -0
  40. data/lib/{generators/templates/concept/cell.rb → rails/generators/concept/templates/concept.rb.erb} +2 -2
  41. data/lib/{generators → rails/generators/concept}/templates/view.erb +0 -0
  42. data/lib/{generators → rails/generators/concept}/templates/view.haml +0 -0
  43. data/lib/rails/generators/concept/templates/view.slim +2 -0
  44. data/lib/rails/generators/test_unit/cell/cell_generator.rb +21 -0
  45. data/lib/{generators/templates/cell_test.rb → rails/generators/test_unit/cell/templates/unit_test.rb.erb} +3 -3
  46. data/lib/rails/generators/test_unit/concept/concept_generator.rb +21 -0
  47. data/lib/rails/generators/test_unit/concept/templates/unit_test.rb.erb +11 -0
  48. data/lib/{cells → tasks}/cells.rake +0 -0
  49. data/test/builder_test.rb +58 -0
  50. data/test/caching_test.rb +298 -0
  51. data/test/cell_benchmark.rb +32 -0
  52. data/test/cell_generator_test.rb +51 -82
  53. data/test/cell_test.rb +8 -23
  54. data/test/concept_generator_test.rb +22 -13
  55. data/test/concept_test.rb +41 -75
  56. data/test/dummy/app/views/musician/hamlet.html.erb +1 -0
  57. data/test/dummy/config/application.rb +21 -8
  58. data/test/{app/cells/bassist/play.html.erb → fixtures/bassist/play.erb} +0 -0
  59. data/test/fixtures/concepts/record/views/layout.erb +1 -0
  60. data/test/{app → fixtures}/concepts/record/views/show.erb +0 -0
  61. data/test/{app → fixtures}/concepts/record/views/song.erb +0 -0
  62. data/test/fixtures/inherit_views_test/popper/tap.erb +1 -0
  63. data/test/fixtures/inherit_views_test/tapper/play.erb +1 -0
  64. data/test/fixtures/inherit_views_test/tapper/tap.erb +1 -0
  65. data/test/fixtures/partial_test/with_partial/show.erb +1 -0
  66. data/test/fixtures/partials/_show.html.erb +1 -0
  67. data/test/fixtures/partials/_show.xml.erb +1 -0
  68. data/test/fixtures/song/ivar.erb +1 -0
  69. data/test/fixtures/song/show.erb +1 -0
  70. data/test/fixtures/song/with_erb.erb +4 -0
  71. data/test/fixtures/song/with_html.erb +1 -0
  72. data/test/fixtures/song/with_locals.erb +2 -0
  73. data/test/fixtures/song_with_layout/happy.erb +1 -0
  74. data/test/fixtures/song_with_layout/merry.erb +1 -0
  75. data/test/fixtures/song_with_layout/show.erb +1 -0
  76. data/test/fixtures/song_with_layout/show_with_layout.erb +1 -0
  77. data/test/fixtures/templates_caching_test/song/show.erb +1 -0
  78. data/test/fixtures/url_helper_test/song/edit.erb +8 -0
  79. data/test/fixtures/url_helper_test/song/with_block.erb +2 -0
  80. data/test/fixtures/url_helper_test/song/with_capture.erb +4 -0
  81. data/test/fixtures/url_helper_test/song/with_content_tag.erb +6 -0
  82. data/test/fixtures/url_helper_test/song/with_form_for_block.erb +3 -0
  83. data/test/fixtures/url_helper_test/song/with_link_to.erb +3 -0
  84. data/test/layout_test.rb +57 -0
  85. data/test/partial_test.rb +27 -0
  86. data/test/prefixes_test.rb +36 -10
  87. data/test/public_test.rb +42 -0
  88. data/test/rails_extensions_test.rb +51 -0
  89. data/test/render_test.rb +103 -0
  90. data/test/templates_test.rb +45 -0
  91. data/test/test_case_test.rb +21 -122
  92. data/test/test_helper.rb +37 -33
  93. data/test/twin_test.rb +3 -7
  94. data/test/url_helper_test.rb +89 -0
  95. metadata +92 -357
  96. data/gemfiles/Gemfile.rails3-0 +0 -7
  97. data/gemfiles/Gemfile.rails3-1 +0 -7
  98. data/gemfiles/Gemfile.rails3-2 +0 -7
  99. data/gemfiles/Gemfile.rails4-0 +0 -12
  100. data/gemfiles/Gemfile.rails4-1 +0 -12
  101. data/lib/cell/base.rb +0 -82
  102. data/lib/cell/base/view.rb +0 -15
  103. data/lib/cell/builder.rb +0 -71
  104. data/lib/cell/deprecations.rb +0 -41
  105. data/lib/cell/dsl.rb +0 -7
  106. data/lib/cell/rack.rb +0 -32
  107. data/lib/cell/rails/helper_api.rb +0 -37
  108. data/lib/cell/rails/view_model.rb +0 -159
  109. data/lib/cell/rails3_0_strategy.rb +0 -82
  110. data/lib/cell/rails3_1_strategy.rb +0 -40
  111. data/lib/cell/rails4_0_strategy.rb +0 -39
  112. data/lib/cell/rails4_1_strategy.rb +0 -40
  113. data/lib/cell/rendering.rb +0 -109
  114. data/lib/cells/rails.rb +0 -86
  115. data/lib/cells/railtie.rb +0 -38
  116. data/lib/cells/version.rb +0 -3
  117. data/lib/generators/USAGE +0 -30
  118. data/lib/generators/cells/base.rb +0 -22
  119. data/lib/generators/cells/cell_generator.rb +0 -15
  120. data/lib/generators/cells/view_generator.rb +0 -18
  121. data/lib/generators/erb/cell_generator.rb +0 -15
  122. data/lib/generators/erb/concept_generator.rb +0 -17
  123. data/lib/generators/haml/cell_generator.rb +0 -17
  124. data/lib/generators/haml/concept_generator.rb +0 -17
  125. data/lib/generators/rails/cell_generator.rb +0 -16
  126. data/lib/generators/rails/concept_generator.rb +0 -16
  127. data/lib/generators/slim/cell_generator.rb +0 -17
  128. data/lib/generators/templates/cell.rb +0 -9
  129. data/lib/generators/templates/view.slim +0 -4
  130. data/lib/generators/test_unit/cell_generator.rb +0 -14
  131. data/lib/generators/trailblazer/base.rb +0 -21
  132. data/lib/generators/trailblazer/view_generator.rb +0 -18
  133. data/test/app/cells/album/views/cover.haml +0 -1
  134. data/test/app/cells/bad_guitarist/_dii.html.erb +0 -1
  135. data/test/app/cells/bad_guitarist_cell.rb +0 -2
  136. data/test/app/cells/bassist/_dii.html.erb +0 -1
  137. data/test/app/cells/bassist/ahem.html.erb +0 -1
  138. data/test/app/cells/bassist/compose.html.erb +0 -1
  139. data/test/app/cells/bassist/contact_form.html.erb +0 -1
  140. data/test/app/cells/bassist/form_for.erb +0 -3
  141. data/test/app/cells/bassist/form_for_in_haml.haml +0 -2
  142. data/test/app/cells/bassist/jam.html.erb +0 -3
  143. data/test/app/cells/bassist/play.js.erb +0 -1
  144. data/test/app/cells/bassist/pose.html.erb +0 -1
  145. data/test/app/cells/bassist/promote.html.erb +0 -1
  146. data/test/app/cells/bassist/provoke.html.erb +0 -1
  147. data/test/app/cells/bassist/shout.html.erb +0 -1
  148. data/test/app/cells/bassist/sing.html.haml +0 -1
  149. data/test/app/cells/bassist/slap.html.erb +0 -1
  150. data/test/app/cells/bassist/yell.en.html.erb +0 -1
  151. data/test/app/cells/bassist_cell.rb +0 -25
  152. data/test/app/cells/club_security.rb +0 -2
  153. data/test/app/cells/club_security/guard/help.html.erb +0 -1
  154. data/test/app/cells/club_security/guard_cell.rb +0 -6
  155. data/test/app/cells/club_security/medic/help.html.erb +0 -1
  156. data/test/app/cells/club_security/medic_cell.rb +0 -8
  157. data/test/app/cells/layouts/b.erb +0 -1
  158. data/test/app/cells/layouts/metal.html.erb +0 -1
  159. data/test/app/cells/rails_helper_api_test/bassist/edit.html.erb +0 -5
  160. data/test/app/cells/shouter/sing.html.erb +0 -1
  161. data/test/app/cells/song/dashboard.haml +0 -7
  162. data/test/app/cells/song/details.html.haml +0 -1
  163. data/test/app/cells/song/info.html.haml +0 -1
  164. data/test/app/cells/song/lyrics.html.haml +0 -6
  165. data/test/app/cells/song/plays.haml +0 -1
  166. data/test/app/cells/song/scale.haml +0 -1
  167. data/test/app/cells/song/show.html.haml +0 -3
  168. data/test/app/cells/song/title.html.haml +0 -1
  169. data/test/app/cells/trumpeter/promote.html.erb +0 -1
  170. data/test/app/cells/trumpeter_cell.rb +0 -8
  171. data/test/app/cells/view_model_test/comments/show.haml +0 -7
  172. data/test/app/concepts/record/views/layout.haml +0 -2
  173. data/test/app/views/shared/_dong.html.erb +0 -1
  174. data/test/cell_module_test.rb +0 -170
  175. data/test/cells_module_test.rb +0 -27
  176. data/test/deprecations_test.rb +0 -101
  177. data/test/dummy/app/helpers/application_helper.rb +0 -2
  178. data/test/dummy/app/views/musician/hamlet.html.haml +0 -1
  179. data/test/dummy/config/environments/development.rb +0 -16
  180. data/test/dummy/config/environments/production.rb +0 -46
  181. data/test/dummy/config/environments/test.rb +0 -33
  182. data/test/dummy/db/test.sqlite3 +0 -0
  183. data/test/dummy/label/app/cells/label/show.erb +0 -1
  184. data/test/dummy/label/app/cells/label_cell.rb +0 -5
  185. data/test/dummy/label/label.gemspec +0 -20
  186. data/test/dummy/label/lib/label.rb +0 -4
  187. data/test/dummy/label/lib/label/version.rb +0 -3
  188. data/test/dummy/public/404.html +0 -26
  189. data/test/dummy/public/422.html +0 -26
  190. data/test/dummy/public/500.html +0 -26
  191. data/test/dummy/public/favicon.ico +0 -0
  192. data/test/dummy/public/stylesheets/.gitkeep +0 -0
  193. data/test/helper_test.rb +0 -81
  194. data/test/rack_test.rb +0 -32
  195. data/test/rails/asset_pipeline_test.rb +0 -20
  196. data/test/rails/caching_test.rb +0 -456
  197. data/test/rails/cells_test.rb +0 -119
  198. data/test/rails/forms_test.rb +0 -75
  199. data/test/rails/integration_test.rb +0 -299
  200. data/test/rails/render_test.rb +0 -189
  201. data/test/rails/view_model_test.rb +0 -226
  202. data/test/rails/view_test.rb +0 -49
  203. data/test/rails_helper_api_test.rb +0 -58
  204. data/test/self_contained_test.rb +0 -31
@@ -1,22 +0,0 @@
1
- require 'rails/generators'
2
- require 'rails/generators/named_base'
3
-
4
- module Cells
5
- module Generators
6
- class Base < ::Rails::Generators::NamedBase
7
- class_option :template_engine
8
- class_option :test_framework
9
- class_option :base_cell_class, :type => :string, :default => "Cell::Rails"
10
- class_option :base_cell_path
11
-
12
- argument :actions, :type => :array, :default => [], :banner => "action action"
13
- check_class_collision :suffix => "Cell"
14
-
15
- private
16
- def base_path
17
- path = (options[:base_cell_path] || 'app/cells').to_s
18
- File.join(path, class_path, file_name)
19
- end
20
- end
21
- end
22
- end
@@ -1,15 +0,0 @@
1
- require 'generators/rails/cell_generator'
2
-
3
- module Cells
4
- module Generators
5
- class CellGenerator < ::Rails::Generators::CellGenerator
6
- source_root File.expand_path('../../templates', __FILE__)
7
-
8
- def say_deprecated
9
- say "====> This generator is now DEPRECATED. <====", :red
10
- say "Please use:"
11
- say " rails g cell #{class_name} #{actions.join(' ')}"
12
- end
13
- end
14
- end
15
- end
@@ -1,18 +0,0 @@
1
- module Cells
2
- module Generators
3
- class ViewGenerator < Base
4
- def create_views
5
- for state in actions do
6
- @state = state
7
- @path = File.join(base_path, "#{state}.html.#{handler}") #base_path defined in Cells::Generators::Base.
8
- template "view.#{handler}", @path
9
- end
10
- end
11
-
12
- private
13
- def handler
14
- raise "Please implement #handler in your view generator and return something like `:erb`."
15
- end
16
- end
17
- end
18
- end
@@ -1,15 +0,0 @@
1
- require 'generators/cells/view_generator'
2
-
3
- module Erb
4
- module Generators
5
- class CellGenerator < ::Cells::Generators::ViewGenerator
6
-
7
- source_root File.expand_path('../../templates', __FILE__)
8
-
9
- private
10
- def handler
11
- :erb
12
- end
13
- end
14
- end
15
- end
@@ -1,17 +0,0 @@
1
- require 'generators/trailblazer/view_generator'
2
-
3
- module Erb
4
- module Generators
5
- class ConceptGenerator < ::Trailblazer::Generators::ViewGenerator
6
-
7
- source_root File.expand_path('../../templates/concept', __FILE__)
8
-
9
- private
10
- def handler
11
- :erb
12
- end
13
- end
14
- end
15
- end
16
-
17
-
@@ -1,17 +0,0 @@
1
- require 'generators/cells/view_generator'
2
-
3
- module Haml
4
- module Generators
5
- class CellGenerator < ::Cells::Generators::ViewGenerator
6
-
7
- source_root File.expand_path('../../templates', __FILE__)
8
-
9
- private
10
- def handler
11
- :haml
12
- end
13
- end
14
- end
15
- end
16
-
17
-
@@ -1,17 +0,0 @@
1
- require 'generators/trailblazer/view_generator'
2
-
3
- module Haml
4
- module Generators
5
- class ConceptGenerator < ::Trailblazer::Generators::ViewGenerator
6
-
7
- source_root File.expand_path('../../templates/concept', __FILE__)
8
-
9
- private
10
- def handler
11
- :haml
12
- end
13
- end
14
- end
15
- end
16
-
17
-
@@ -1,16 +0,0 @@
1
- require 'generators/cells/base'
2
-
3
- module Rails
4
- module Generators
5
- class CellGenerator < ::Cells::Generators::Base
6
- source_root File.expand_path('../../templates', __FILE__)
7
-
8
- def create_cell_file
9
- template 'cell.rb', "#{base_path}_cell.rb"
10
- end
11
-
12
- hook_for(:template_engine)
13
- hook_for(:test_framework)
14
- end
15
- end
16
- end
@@ -1,16 +0,0 @@
1
- require 'generators/trailblazer/base'
2
-
3
- module Rails
4
- module Generators
5
- class ConceptGenerator < ::Trailblazer::Generators::Cell
6
- source_root File.expand_path('../../templates/concept', __FILE__)
7
-
8
- def create_cell_file
9
- template 'cell.rb', "#{base_path}/cell.rb"
10
- end
11
-
12
- hook_for(:template_engine)
13
- hook_for(:test_framework)
14
- end
15
- end
16
- end
@@ -1,17 +0,0 @@
1
- require 'generators/cells/view_generator'
2
-
3
- module Slim
4
- module Generators
5
- class CellGenerator < ::Cells::Generators::ViewGenerator
6
-
7
- source_root File.expand_path('../../templates', __FILE__)
8
-
9
- private
10
- def handler
11
- :slim
12
- end
13
- end
14
- end
15
- end
16
-
17
-
@@ -1,9 +0,0 @@
1
- class <%= class_name %>Cell < <%= options.base_cell_class %>
2
-
3
- <% for action in actions -%>
4
- def <%= action %>
5
- render
6
- end
7
-
8
- <% end -%>
9
- end
@@ -1,4 +0,0 @@
1
- h1
2
- |<%= class_name %>#<%= @state %>
3
- p
4
- |Find me in <%= @path %>
@@ -1,14 +0,0 @@
1
- require 'generators/cells/base'
2
-
3
- module TestUnit
4
- module Generators
5
- class CellGenerator < ::Cells::Generators::Base
6
- source_root File.expand_path('../../templates', __FILE__)
7
-
8
- def create_test
9
- @states = actions
10
- template 'cell_test.rb', File.join('test/cells/', class_path, "#{file_name}_cell_test.rb")
11
- end
12
- end
13
- end
14
- end
@@ -1,21 +0,0 @@
1
- require 'rails/generators'
2
- require 'rails/generators/named_base'
3
-
4
- module Trailblazer
5
- module Generators
6
- class Cell < ::Rails::Generators::NamedBase
7
- class_option :template_engine
8
- class_option :test_framework
9
- class_option :base_cell_class, :type => :string, :default => "Cell::Rails"
10
- class_option :base_cell_path
11
-
12
- argument :actions, :type => :array, :default => [:show], :banner => "action action"
13
-
14
- private
15
- def base_path
16
- path = (options[:base_cell_path] || 'app/concepts').to_s
17
- File.join(path, class_path, file_name)
18
- end
19
- end
20
- end
21
- end
@@ -1,18 +0,0 @@
1
- module Trailblazer
2
- module Generators
3
- class ViewGenerator < Cell # Trailblazer::Generators::Cell
4
- def create_views
5
- for state in actions do
6
- @state = state
7
- @path = File.join(base_path, "views/#{state}.#{handler}") #base_path defined in Cells::Generators::Base.
8
- template "view.#{handler}", @path
9
- end
10
- end
11
-
12
- private
13
- def handler
14
- raise "Please implement #handler in your view generator and return something like `:erb`."
15
- end
16
- end
17
- end
18
- end
@@ -1 +0,0 @@
1
- %h3= @title
@@ -1,2 +0,0 @@
1
- class BadGuitaristCell < BassistCell
2
- end
@@ -1 +0,0 @@
1
- <%= "Ahem" * times %>
@@ -1 +0,0 @@
1
- Dumm <%= render :partial => @partial %>
@@ -1 +0,0 @@
1
- <%= form_tag "musician/index" %>
@@ -1,3 +0,0 @@
1
- <%= form_for FormsTest::Song.new, :url => "/songs" do |f| %>
2
- <%= f.text_field :name %>
3
- <% end %>
@@ -1,2 +0,0 @@
1
- = form_for FormsTest::Song.new, :url => "/songs" do |f|
2
- = f.text_field :name
@@ -1,3 +0,0 @@
1
- <% @chords.each do |chord| %>
2
- <%= render :state => :sing %>
3
- <% end %>
@@ -1 +0,0 @@
1
- alert("Doo");
@@ -1 +0,0 @@
1
- Come and <%= params[:what] %> me!
@@ -1 +0,0 @@
1
- Find me at <%= link_to "vd.com", musicians_path %>
@@ -1 +0,0 @@
1
- That's me, naked <%= image_tag "me.png" %>
@@ -1 +0,0 @@
1
- *shouts* <%= @words %>
@@ -1 +0,0 @@
1
- %h1 Laaa
@@ -1 +0,0 @@
1
- Boing in <%= @note %>
@@ -1,25 +0,0 @@
1
- class BassistCell < Cell::Rails
2
- def play
3
- render
4
- end
5
-
6
- def shout(args)
7
- @words = args[:words]
8
- render
9
- end
10
-
11
- def provoke
12
- controller.config.relative_url_root = "" if Cell.rails_version.~ 3.0
13
-
14
- render
15
- end
16
-
17
- def promote
18
- render
19
- end
20
-
21
- def slap
22
- @note = "D"
23
- render
24
- end
25
- end
@@ -1,2 +0,0 @@
1
- module ClubSecurity
2
- end
@@ -1 +0,0 @@
1
- <%= respond_to?(:irritate) %> <%= respond_to?(:smile) %>
@@ -1,6 +0,0 @@
1
- class ClubSecurity::GuardCell < Cell::Rails
2
- helper do
3
- def irritate; end
4
- end
5
- def help; render; end
6
- end
@@ -1 +0,0 @@
1
- <%= respond_to?(:irritate) %> <%= respond_to?(:smile) %>
@@ -1,8 +0,0 @@
1
- class ClubSecurity::MedicCell < Cell::Rails
2
- module NiceGuy
3
- def smile; end
4
- end
5
-
6
- helper NiceGuy
7
- def help; render; end
8
- end
@@ -1 +0,0 @@
1
- <b><%= yield %></b>
@@ -1 +0,0 @@
1
- Metal:<%= @content_for_layout %>
@@ -1,5 +0,0 @@
1
- <%= form_for @fruit do |f| %>
2
- <%= f.text_field :title %>
3
- <%= f.button :submit %>
4
- <% end %>
5
- <%= url_for(:host => "apotomo.de") %>
@@ -1 +0,0 @@
1
- AAAaaargh!
@@ -1,7 +0,0 @@
1
- %h1 Dashboard
2
-
3
- = SongCell::Lyrics.new(controller, :song => song, :phrases => ["In the Mirror", "I can see"]).show
4
-
5
- = SongCell::PlaysCell.new(controller, :song => song).call
6
-
7
- = cell("song_cell/plays").call
@@ -1 +0,0 @@
1
- %h3 #{title}
@@ -1 +0,0 @@
1
- %li #{render :title}
@@ -1,6 +0,0 @@
1
- -# notice how we use title from the superclass here.
2
- %h3 Lyrics for #{title}
3
-
4
- - phrases.each do |ln|
5
- %li
6
- = ln
@@ -1 +0,0 @@
1
- Plays: 99
@@ -1 +0,0 @@
1
- A Minor!
@@ -1,3 +0,0 @@
1
- %h1 #{title}
2
-
3
- = link_to "Permalink", song
@@ -1 +0,0 @@
1
- = title
@@ -1 +0,0 @@
1
- Find me at <%= link_to "vd.com", musicians_url %>
@@ -1,8 +0,0 @@
1
- class TrumpeterCell < Cell::Rails
2
- include ActionController::UrlFor
3
-
4
- def promote
5
- render
6
- end
7
-
8
- end
@@ -1,7 +0,0 @@
1
- %h1 "Comments from #{link_to title, Musician.new}"
2
-
3
- = local
4
-
5
- =# form
6
-
7
- =# comment.created_at