blogelator 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (162) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +20 -0
  3. data/README.md +86 -0
  4. data/Rakefile +29 -0
  5. data/app/assets/images/blogelator/blogelator-logo.svg +15 -0
  6. data/app/assets/javascripts/blogelator/admin.js +19 -0
  7. data/app/assets/javascripts/blogelator/application.js +2 -0
  8. data/app/assets/javascripts/blogelator/components/markdown_editor_component.js +187 -0
  9. data/app/assets/javascripts/blogelator/components/save_button_component.js +76 -0
  10. data/app/assets/javascripts/blogelator/config/marked.js +10 -0
  11. data/app/assets/javascripts/blogelator/config/router.js +9 -0
  12. data/app/assets/javascripts/blogelator/config/routes.js +13 -0
  13. data/app/assets/javascripts/blogelator/config/serializer.js +10 -0
  14. data/app/assets/javascripts/blogelator/config/store.js +10 -0
  15. data/app/assets/javascripts/blogelator/controllers/application_controller.js +11 -0
  16. data/app/assets/javascripts/blogelator/controllers/posts/posts_edit_controller.js +97 -0
  17. data/app/assets/javascripts/blogelator/controllers/posts/posts_index_controller.js +9 -0
  18. data/app/assets/javascripts/blogelator/controllers/posts/posts_new_controller.js +6 -0
  19. data/app/assets/javascripts/blogelator/controllers/posts/posts_show_controller.js +37 -0
  20. data/app/assets/javascripts/blogelator/models/post.js +34 -0
  21. data/app/assets/javascripts/blogelator/routes/index_route.js +10 -0
  22. data/app/assets/javascripts/blogelator/routes/posts_edit_route.js +36 -0
  23. data/app/assets/javascripts/blogelator/routes/posts_index_route.js +20 -0
  24. data/app/assets/javascripts/blogelator/routes/posts_new_route.js +53 -0
  25. data/app/assets/javascripts/blogelator/routes/posts_route.js +10 -0
  26. data/app/assets/javascripts/blogelator/routes/posts_show_route.js +14 -0
  27. data/app/assets/javascripts/blogelator/templates/application.handlebars +23 -0
  28. data/app/assets/javascripts/blogelator/templates/components/markdown-editor.handlebars +8 -0
  29. data/app/assets/javascripts/blogelator/templates/components/save-button.handlebars +8 -0
  30. data/app/assets/javascripts/blogelator/templates/posts/_footer.handlebars +0 -0
  31. data/app/assets/javascripts/blogelator/templates/posts/_form.handlebars +6 -0
  32. data/app/assets/javascripts/blogelator/templates/posts/_form_action_bar.handlebars +22 -0
  33. data/app/assets/javascripts/blogelator/templates/posts/_show_action_bar.handlebars +20 -0
  34. data/app/assets/javascripts/blogelator/templates/posts/edit.handlebars +1 -0
  35. data/app/assets/javascripts/blogelator/templates/posts/index.handlebars +30 -0
  36. data/app/assets/javascripts/blogelator/templates/posts/new.handlebars +1 -0
  37. data/app/assets/javascripts/blogelator/templates/posts/show.handlebars +22 -0
  38. data/app/assets/stylesheets/blogelator/admin/all.scss +7 -0
  39. data/app/assets/stylesheets/blogelator/admin/components/markdown_editor.scss +142 -0
  40. data/app/assets/stylesheets/blogelator/admin/components/save_button.scss +121 -0
  41. data/app/assets/stylesheets/blogelator/admin/layout.scss +94 -0
  42. data/app/assets/stylesheets/blogelator/admin/posts/_form.scss +12 -0
  43. data/app/assets/stylesheets/blogelator/admin/posts/_form_action_bar.scss +84 -0
  44. data/app/assets/stylesheets/blogelator/admin/posts/_posts_list.scss +43 -0
  45. data/app/assets/stylesheets/blogelator/admin/posts/edit.scss +7 -0
  46. data/app/assets/stylesheets/blogelator/admin/posts/index.scss +14 -0
  47. data/app/assets/stylesheets/blogelator/admin/posts/new.scss +16 -0
  48. data/app/assets/stylesheets/blogelator/admin/posts/show.scss +17 -0
  49. data/app/assets/stylesheets/blogelator/application/all.scss +19 -0
  50. data/app/assets/stylesheets/blogelator/application/layout.scss +49 -0
  51. data/app/assets/stylesheets/blogelator/application/posts/index.scss +50 -0
  52. data/app/assets/stylesheets/blogelator/application/posts/show.scss +64 -0
  53. data/app/assets/stylesheets/blogelator/mixins/blogelator_button.scss +57 -0
  54. data/app/assets/stylesheets/blogelator/mixins/blogelator_logo.scss +12 -0
  55. data/app/assets/stylesheets/blogelator/shared/post.scss +161 -0
  56. data/app/assets/stylesheets/blogelator/shared/typography/code_highlighting.scss +111 -0
  57. data/app/assets/stylesheets/blogelator/shared/typography/forms.scss +94 -0
  58. data/app/assets/stylesheets/blogelator/shared/typography/headings.scss +22 -0
  59. data/app/assets/stylesheets/blogelator/shared/typography/lists.scss +25 -0
  60. data/app/controllers/blogelator/admin/application_controller.rb +15 -0
  61. data/app/controllers/blogelator/admin/images_controller.rb +40 -0
  62. data/app/controllers/blogelator/admin/posts_controller.rb +67 -0
  63. data/app/controllers/blogelator/application_controller.rb +5 -0
  64. data/app/controllers/blogelator/posts_controller.rb +37 -0
  65. data/app/controllers/concerns/blogelator/admin/auth.rb +23 -0
  66. data/app/helpers/blogelator/admin/posts_helper.rb +7 -0
  67. data/app/helpers/blogelator/posts_helper.rb +28 -0
  68. data/app/models/blogelator/ability.rb +11 -0
  69. data/app/models/blogelator/html_renderer.rb +10 -0
  70. data/app/models/blogelator/post.rb +63 -0
  71. data/app/models/blogelator/tag.rb +5 -0
  72. data/app/serializers/blogelator/post_serializer.rb +6 -0
  73. data/app/views/blogelator/admin/posts/index.html.erb +0 -0
  74. data/app/views/blogelator/posts/_post.html.erb +14 -0
  75. data/app/views/blogelator/posts/index.html.erb +39 -0
  76. data/app/views/blogelator/posts/show.html.erb +27 -0
  77. data/app/views/layouts/blogelator/_footer.html.erb +3 -0
  78. data/app/views/layouts/blogelator/_head.html.erb +7 -0
  79. data/app/views/layouts/blogelator/_header.html.erb +7 -0
  80. data/app/views/layouts/blogelator/admin.html.erb +14 -0
  81. data/app/views/layouts/blogelator/application.html.erb +14 -0
  82. data/config/jshint.json +43 -0
  83. data/config/routes.rb +15 -0
  84. data/db/migrate/20140221192000_create_blogelator_posts.rb +12 -0
  85. data/db/migrate/20140221204230_add_slug_and_change_user_to_author.rb +6 -0
  86. data/db/migrate/20140221212026_create_blogelator_tags.rb +10 -0
  87. data/db/migrate/20140224024607_change_posts_properties_to_have_defaults.rb +14 -0
  88. data/db/migrate/20140224175024_add_slugs_to_existing_posts.rb +16 -0
  89. data/db/migrate/20140224192058_add_published_at_to_posts.rb +13 -0
  90. data/db/migrate/20140303015004_add_summary_to_posts.rb +9 -0
  91. data/lib/assets/stylesheets/blogelator/_variables_sample.scss +38 -0
  92. data/lib/blogelator.rb +27 -0
  93. data/lib/blogelator/engine.rb +35 -0
  94. data/lib/blogelator/version.rb +3 -0
  95. data/lib/generators/blogelator/install_generator.rb +94 -0
  96. data/spec/dummy/README.rdoc +28 -0
  97. data/spec/dummy/Rakefile +6 -0
  98. data/spec/dummy/app/assets/javascripts/application.js +1 -0
  99. data/spec/dummy/app/assets/javascripts/features/user_visits_admin_page_spec.js +12 -0
  100. data/spec/dummy/app/assets/javascripts/features/user_visits_post_page_spec.js +12 -0
  101. data/spec/dummy/app/assets/javascripts/fixtures/post.js +17 -0
  102. data/spec/dummy/app/assets/javascripts/test_helper.js +12 -0
  103. data/spec/dummy/app/assets/stylesheets/application.css +12 -0
  104. data/spec/dummy/app/assets/stylesheets/blogelator/_variables.scss +38 -0
  105. data/spec/dummy/app/assets/stylesheets/blogelator/admin.css.scss +4 -0
  106. data/spec/dummy/app/assets/stylesheets/blogelator/application.css.scss +4 -0
  107. data/spec/dummy/app/assets/stylesheets/test_helper.css +21 -0
  108. data/spec/dummy/app/controllers/application_controller.rb +9 -0
  109. data/spec/dummy/app/helpers/application_helper.rb +2 -0
  110. data/spec/dummy/app/models/blogelator/ability.rb +9 -0
  111. data/spec/dummy/app/views/layouts/application.html.erb +14 -0
  112. data/spec/dummy/app/views/q_unit/rails/test/index.html.erb +17 -0
  113. data/spec/dummy/app/views/qunit/rails/test/index.html.erb +17 -0
  114. data/spec/dummy/bin/bundle +3 -0
  115. data/spec/dummy/bin/rails +4 -0
  116. data/spec/dummy/bin/rake +4 -0
  117. data/spec/dummy/config.ru +4 -0
  118. data/spec/dummy/config/application.rb +24 -0
  119. data/spec/dummy/config/boot.rb +5 -0
  120. data/spec/dummy/config/database.yml +25 -0
  121. data/spec/dummy/config/environment.rb +5 -0
  122. data/spec/dummy/config/environments/development.rb +32 -0
  123. data/spec/dummy/config/environments/production.rb +80 -0
  124. data/spec/dummy/config/environments/test.rb +36 -0
  125. data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
  126. data/spec/dummy/config/initializers/blogelator.rb +6 -0
  127. data/spec/dummy/config/initializers/filter_parameter_logging.rb +4 -0
  128. data/spec/dummy/config/initializers/inflections.rb +16 -0
  129. data/spec/dummy/config/initializers/mime_types.rb +5 -0
  130. data/spec/dummy/config/initializers/secret_token.rb +12 -0
  131. data/spec/dummy/config/initializers/session_store.rb +3 -0
  132. data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
  133. data/spec/dummy/config/locales/en.yml +23 -0
  134. data/spec/dummy/config/routes.rb +3 -0
  135. data/spec/dummy/db/development.sqlite3 +0 -0
  136. data/spec/dummy/db/migrate/20140221215439_create_blogelator_posts.blogelator.rb +13 -0
  137. data/spec/dummy/db/migrate/20140221215440_add_slug_and_change_user_to_author.blogelator.rb +7 -0
  138. data/spec/dummy/db/migrate/20140224024931_create_blogelator_tags.blogelator.rb +11 -0
  139. data/spec/dummy/db/migrate/20140224025218_change_posts_properties_to_have_defaults.blogelator.rb +15 -0
  140. data/spec/dummy/db/migrate/20140224205646_add_slugs_to_existing_posts.blogelator.rb +17 -0
  141. data/spec/dummy/db/migrate/20140224205647_add_published_at_to_posts.blogelator.rb +14 -0
  142. data/spec/dummy/db/migrate/20140303015133_add_summary_to_posts.blogelator.rb +6 -0
  143. data/spec/dummy/db/production.sqlite3 +0 -0
  144. data/spec/dummy/db/schema.rb +37 -0
  145. data/spec/dummy/db/test.sqlite3 +0 -0
  146. data/spec/dummy/log/development.log +50393 -0
  147. data/spec/dummy/log/production.log +76 -0
  148. data/spec/dummy/log/test.log +11750 -0
  149. data/spec/dummy/public/404.html +58 -0
  150. data/spec/dummy/public/422.html +58 -0
  151. data/spec/dummy/public/500.html +57 -0
  152. data/spec/dummy/public/favicon.ico +0 -0
  153. data/spec/dummy/public/index.html.erb +14 -0
  154. data/spec/dummy/tmp/ember-rails/ember-data.js +11132 -0
  155. data/spec/dummy/tmp/ember-rails/ember.js +42882 -0
  156. data/spec/factories/post.rb +11 -0
  157. data/spec/features/user_visits_blog_post_spec.rb +44 -0
  158. data/spec/features/user_visits_blog_spec.rb +85 -0
  159. data/spec/models/blogelator/post_spec.rb +95 -0
  160. data/spec/qunit_runner.js +148 -0
  161. data/spec/spec_helper.rb +34 -0
  162. metadata +764 -0
@@ -0,0 +1,11 @@
1
+ FactoryGirl.define do
2
+ factory :post, class: Blogelator::Post do
3
+ title "My First Blog Post"
4
+ body_markdown "Here's a paragraph with some **bold** text.\n\n## Heading.h2\n\n- And some\n- List\n- Items"
5
+ end
6
+
7
+ factory :long_post, class: Blogelator::Post do
8
+ title "This Is a Long Post"
9
+ body_markdown "This should be in the summary. Lorem ipsum dolor sit amet, consectetur adipiscing elit. \n\nThis should not show up in the summary. Nam magna turpis, ornare et scelerisque quis, dapibus at ligula. Fusce eros tellus, porttitor eu mi sed, consectetur lobortis ipsum. In sit amet est fringilla, facilisis elit id, tincidunt magna. In eleifend convallis mi, ut molestie turpis vulputate vitae. Fusce auctor adipiscing lectus, ultrices porta libero sollicitudin id. Mauris fermentum at eros ut semper. Pellentesque ac nisl dolor. Fusce quis augue quam. Nullam ultrices vitae magna nec feugiat. Duis imperdiet et quam mollis sollicitudin. Aliquam cursus quis libero ac feugiat. In sodales suscipit velit, a hendrerit diam scelerisque sed. Donec at tincidunt turpis. Nunc eu consequat velit. Praesent mollis ante sit amet enim vehicula adipiscing. Suspendisse pellentesque, risus eu venenatis tristique, erat turpis sodales lorem, ac sagittis diam nibh in tellus. This should not show up in the summary."
10
+ end
11
+ end
@@ -0,0 +1,44 @@
1
+ # encoding: utf-8
2
+
3
+ require "spec_helper"
4
+
5
+ feature "User visits a blog post" do
6
+
7
+ it "has the title" do
8
+ post = create(:post, published_at: Time.now)
9
+
10
+ visit blogelator.post_path(post)
11
+
12
+ page.should have_content "My First Blog Post"
13
+ end
14
+
15
+ it "has the body text" do
16
+ post = create(:post, published_at: Time.now)
17
+
18
+ visit blogelator.post_path(post)
19
+
20
+ page.should have_content "paragraph with some bold text."
21
+ end
22
+
23
+ it "has a link to the next and previous post" do
24
+ random_post = create(:post, title: "Random Post", published_at: Time.now - 12.days)
25
+ random_post = create(:post, title: "Random Post", published_at: Time.now + 2.days)
26
+ previous_post = create(:post, title: "Previous Post", published_at: Time.now - 10.days)
27
+ post = create(:post, published_at: Time.now, published_at: Time.now - 5.days)
28
+ next_post = create(:post, title: "Next Post", published_at: Time.now, published_at: Time.now)
29
+
30
+ visit blogelator.post_path(post)
31
+
32
+ page.should have_content previous_post.title
33
+ page.should have_content next_post.title
34
+
35
+ click_link("Previous Post")
36
+ current_path.should eq(blogelator.post_path(previous_post))
37
+
38
+ visit blogelator.post_path(post)
39
+
40
+ click_link("Next Post")
41
+ current_path.should eq(blogelator.post_path(next_post))
42
+ end
43
+
44
+ end
@@ -0,0 +1,85 @@
1
+ # encoding: utf-8
2
+
3
+ require "spec_helper"
4
+
5
+ feature "User visits the blog" do
6
+
7
+ it "has the site name" do
8
+ Blogelator.site_name = "Brian's Blog"
9
+
10
+ visit blogelator.root_path
11
+
12
+ page.should have_content "Brian's Blog"
13
+ end
14
+
15
+ it "has default blog post when there are no published posts" do
16
+ visit blogelator.root_path
17
+
18
+ page.should have_content "Welcome to Blogelator"
19
+ page.should have_content "Thanks for using Blogelator,"
20
+ end
21
+
22
+ it "has the 5 newest published posts by default" do
23
+ create(:post, title: "Post 1", published_at: Time.now)
24
+ create(:post, title: "Post 2", published_at: Time.now - 1.day)
25
+ create(:post, title: "Post 3", published_at: Time.now - 2.days)
26
+ create(:post, title: "Post 4", published_at: Time.now - 3.days)
27
+ create(:post, title: "Post 5", published_at: Time.now - 4.days)
28
+ create(:post, title: "Post 6", published_at: Time.now - 5.days)
29
+
30
+ Blogelator.posts_per_page = nil
31
+
32
+ visit blogelator.root_path
33
+
34
+ page.should have_content "Post 1"
35
+ page.should have_content "Post 2"
36
+ page.should have_content "Post 3"
37
+ page.should have_content "Post 4"
38
+ page.should have_content "Post 5"
39
+
40
+ page.should_not have_content "Post 6"
41
+ end
42
+
43
+ it "has the configured amount of newest published posts" do
44
+ create(:post, title: "Post 1", published_at: Time.now)
45
+ create(:post, title: "Post 2", published_at: Time.now - 1.day)
46
+ create(:post, title: "Post 3", published_at: Time.now - 2.days)
47
+ create(:post, title: "Post 4", published_at: Time.now - 3.days)
48
+ create(:post, title: "Post 5", published_at: Time.now - 4.days)
49
+ create(:post, title: "Post 6", published_at: Time.now - 5.days)
50
+
51
+ Blogelator.posts_per_page = 3
52
+
53
+ visit blogelator.root_path
54
+
55
+ page.should have_content "Post 1"
56
+ page.should have_content "Post 2"
57
+ page.should have_content "Post 3"
58
+
59
+ page.should_not have_content "Post 4"
60
+ page.should_not have_content "Post 5"
61
+ page.should_not have_content "Post 6"
62
+ end
63
+
64
+ it "has the summary of each blog post" do
65
+ create(:post, title: "Post 1", published_at: Time.now)
66
+ create(:long_post, title: "Post 2", published_at: Time.now - 1.day)
67
+
68
+ visit blogelator.root_path
69
+
70
+ page.should have_content "paragraph with some bold text"
71
+ page.should have_content "This should be in the summary."
72
+ page.should have_content "…"
73
+ page.should_not have_content "This should not show up in the summary."
74
+ end
75
+
76
+ it "should take them to the post when they click the title" do
77
+ post = create(:post, title: "Click Me Please!", published_at: Time.now)
78
+
79
+ visit blogelator.root_path
80
+ click_link("Click Me Please!")
81
+
82
+ current_path.should eq(blogelator.post_path(post))
83
+ end
84
+
85
+ end
@@ -0,0 +1,95 @@
1
+ # encoding: utf-8
2
+
3
+ require "spec_helper"
4
+
5
+ module Blogelator
6
+
7
+ # ---------------------------------------------------------
8
+ # Class Methods
9
+ # ---------------------------------------------------------
10
+
11
+ describe Post, ".published" do
12
+ it "returns only published posts" do
13
+ published_post = create(:post, published_at: Time.now)
14
+ unpublished_post = create(:post)
15
+ Post.published.should eq([published_post])
16
+ end
17
+ end
18
+
19
+ describe Post, ".unpublished" do
20
+ it "returns only unpublished posts" do
21
+ published_post = create(:post, published_at: Time.now)
22
+ unpublished_post = create(:post)
23
+ Post.unpublished.should eq([unpublished_post])
24
+ end
25
+ end
26
+
27
+ # ---------------------------------------------------------
28
+ # Instance Methods
29
+ # ---------------------------------------------------------
30
+
31
+ describe Post, "#body_html" do
32
+ it "returns the converted HTML from #body_markdown on save" do
33
+ post = create(:post)
34
+ post.body_html.should eq("<p>Here&rsquo;s a paragraph with some <strong>bold</strong> text.</p>\n\n<h2>Heading.h2</h2>\n\n<ul>\n<li>And some</li>\n<li>List</li>\n<li>Items</li>\n</ul>\n")
35
+ end
36
+ end
37
+
38
+ describe Post, "#published?" do
39
+ it "returns whether the post is published" do
40
+ published_post = create(:post, published_at: Time.now)
41
+ unpublished_post = create(:post)
42
+ published_post.published?.should eq(true)
43
+ unpublished_post.published?.should eq(false)
44
+ end
45
+ end
46
+
47
+ describe Post, "#slug" do
48
+ it "returns the title as a parameterized URL on published posts" do
49
+ published_post = create(:post, published_at: Time.now)
50
+ published_post.slug.should eq("my-first-blog-post")
51
+ end
52
+
53
+ it "returns nil on unpublished posts" do
54
+ unpublished_post = create(:post)
55
+ unpublished_post.slug.should eq(nil)
56
+ end
57
+
58
+ it "should not change the on additional saves if the post is published" do
59
+ published_post = create(:post, published_at: Time.now)
60
+ published_post.title = "Title Changed"
61
+ published_post.save
62
+ published_post.slug.should eq("my-first-blog-post")
63
+ end
64
+
65
+ it "should use the last title until published" do
66
+ post = create(:post)
67
+ post.slug.should eq(nil)
68
+ post.title = "Title Changed"
69
+ post.published_at = Time.now
70
+ post.save
71
+ post.slug.should eq("title-changed")
72
+ end
73
+ end
74
+
75
+ describe Post, "#summary" do
76
+ it "should limit to 300 characters of the first paragraph by default" do
77
+ post = create(:long_post, published_at: Time.now)
78
+ post.summary.should include("This should be in the summary.")
79
+ post.summary.should include("&hellip;")
80
+ post.summary.should_not include("This should not show up in the summary.")
81
+ end
82
+
83
+ it "returns the entire blog post if under 300 characters" do
84
+ post = create(:post, body_markdown: "Hello world.", published_at: Time.now)
85
+ post.summary.should include("Hello world.")
86
+ post.summary.should_not include("&#8230;")
87
+ end
88
+
89
+ it "returns a custom summary if set before save" do
90
+ post = create(:post, custom_summary: "Custom summary.", published_at: Time.now)
91
+ post.summary.should include("Custom summary.")
92
+ end
93
+ end
94
+
95
+ end
@@ -0,0 +1,148 @@
1
+ /*
2
+ * PhantomJS Runner QUnit Plugin 1.2.0
3
+ *
4
+ * PhantomJS binaries: http://phantomjs.org/download.html
5
+ * Requires PhantomJS 1.6+ (1.7+ recommended)
6
+ *
7
+ * Run with:
8
+ * phantomjs runner.js [url-of-your-qunit-testsuite]
9
+ *
10
+ * e.g.
11
+ * phantomjs runner.js http://localhost/qunit/test/index.html
12
+ */
13
+
14
+ /*global phantom:false, require:false, console:false, window:false, QUnit:false */
15
+
16
+ (function() {
17
+ 'use strict';
18
+
19
+ var url, page, timeout,
20
+ args = require('system').args;
21
+
22
+ // arg[0]: scriptName, args[1...]: arguments
23
+ if (args.length < 2 || args.length > 3) {
24
+ console.error('Usage:\n phantomjs runner.js [url-of-your-qunit-testsuite] [timeout-in-seconds]');
25
+ phantom.exit(1);
26
+ }
27
+
28
+ url = args[1];
29
+ page = require('webpage').create();
30
+ if (args[2] !== undefined) {
31
+ timeout = parseInt(args[2], 10);
32
+ }
33
+
34
+ // Route `console.log()` calls from within the Page context to the main Phantom context (i.e. current `this`)
35
+ page.onConsoleMessage = function(msg) {
36
+ console.log(msg);
37
+ };
38
+
39
+ page.onInitialized = function() {
40
+ page.evaluate(addLogging);
41
+ };
42
+
43
+ page.onCallback = function(message) {
44
+ var result,
45
+ failed;
46
+
47
+ if (message) {
48
+ if (message.name === 'QUnit.done') {
49
+ result = message.data;
50
+ failed = !result || !result.total || result.failed;
51
+
52
+ if (!result.total) {
53
+ console.error('No tests were executed. Are you loading tests asynchronously?');
54
+ }
55
+
56
+ phantom.exit(failed ? 1 : 0);
57
+ }
58
+ }
59
+ };
60
+
61
+ page.open(url, function(status) {
62
+ if (status !== 'success') {
63
+ console.error('Unable to access network: ' + status);
64
+ phantom.exit(1);
65
+ } else {
66
+ // Cannot do this verification with the 'DOMContentLoaded' handler because it
67
+ // will be too late to attach it if a page does not have any script tags.
68
+ var qunitMissing = page.evaluate(function() { return (typeof QUnit === 'undefined' || !QUnit); });
69
+ if (qunitMissing) {
70
+ console.error('The `QUnit` object is not present on this page.');
71
+ phantom.exit(1);
72
+ }
73
+
74
+ // Set a timeout on the test running, otherwise tests with async problems will hang forever
75
+ if (typeof timeout === 'number') {
76
+ setTimeout(function() {
77
+ console.error('The specified timeout of ' + timeout + ' seconds has expired. Aborting...');
78
+ phantom.exit(1);
79
+ }, timeout * 1000);
80
+ }
81
+
82
+ // Do nothing... the callback mechanism will handle everything!
83
+ }
84
+ });
85
+
86
+ function addLogging() {
87
+ window.document.addEventListener('DOMContentLoaded', function() {
88
+ var currentTestAssertions = [];
89
+
90
+ QUnit.log(function(details) {
91
+ var response;
92
+
93
+ // Ignore passing assertions
94
+ if (details.result) {
95
+ return;
96
+ }
97
+
98
+ response = details.message || '';
99
+
100
+ if (typeof details.expected !== 'undefined') {
101
+ if (response) {
102
+ response += ', ';
103
+ }
104
+
105
+ response += 'expected: ' + details.expected + ', but was: ' + details.actual;
106
+ }
107
+
108
+ if (details.source) {
109
+ response += "\n" + details.source;
110
+ }
111
+
112
+ currentTestAssertions.push('Failed assertion: ' + response);
113
+ });
114
+
115
+ QUnit.testDone(function(result) {
116
+ var i,
117
+ len,
118
+ name = '';
119
+
120
+ if (result.module) {
121
+ name += result.module + ': ';
122
+ }
123
+ name += result.name;
124
+
125
+ if (result.failed) {
126
+ console.log('\n' + 'Test failed: ' + name);
127
+
128
+ for (i = 0, len = currentTestAssertions.length; i < len; i++) {
129
+ console.log(' ' + currentTestAssertions[i]);
130
+ }
131
+ }
132
+
133
+ currentTestAssertions.length = 0;
134
+ });
135
+
136
+ QUnit.done(function(result) {
137
+ console.log('\n' + 'Took ' + result.runtime + 'ms to run ' + result.total + ' tests. ' + result.passed + ' passed, ' + result.failed + ' failed.');
138
+
139
+ if (typeof window.callPhantom === 'function') {
140
+ window.callPhantom({
141
+ 'name': 'QUnit.done',
142
+ 'data': result
143
+ });
144
+ }
145
+ });
146
+ }, false);
147
+ }
148
+ })();
@@ -0,0 +1,34 @@
1
+ # This file is copied to spec/ when you run 'rails generate rspec:install'
2
+ ENV["RAILS_ENV"] ||= "test"
3
+ require File.expand_path("../dummy/config/environment", __FILE__)
4
+ require "capybara/rspec"
5
+ require "database_cleaner"
6
+ require "factory_girl_rails"
7
+ require "rspec/rails"
8
+ require "rspec/autorun"
9
+ Rails.backtrace_cleaner.remove_silencers!
10
+
11
+ # Requires supporting ruby files with custom matchers and macros, etc,
12
+ # in spec/support/ and its subdirectories.
13
+ Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
14
+
15
+ # Checks for pending migrations before tests are run.
16
+ # If you are not using ActiveRecord, you can remove this line.
17
+ ActiveRecord::Migration.check_pending! if defined?(ActiveRecord::Migration)
18
+
19
+ RSpec.configure do |config|
20
+ config.mock_with :rspec
21
+ config.use_transactional_fixtures = true
22
+ config.infer_base_class_for_anonymous_controllers = false
23
+ config.order = "random"
24
+ config.include FactoryGirl::Syntax::Methods
25
+
26
+ config.before(:suite) do
27
+ begin
28
+ DatabaseCleaner.start
29
+ FactoryGirl.lint
30
+ ensure
31
+ DatabaseCleaner.clean
32
+ end
33
+ end
34
+ end
metadata ADDED
@@ -0,0 +1,764 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: blogelator
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Brian Pattison
8
+ - Matthew Sullivan
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2014-03-09 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: aws-sdk
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - ~>
19
+ - !ruby/object:Gem::Version
20
+ version: '1.36'
21
+ type: :runtime
22
+ prerelease: false
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - ~>
26
+ - !ruby/object:Gem::Version
27
+ version: '1.36'
28
+ - !ruby/object:Gem::Dependency
29
+ name: bourbon
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - ~>
33
+ - !ruby/object:Gem::Version
34
+ version: '3.1'
35
+ type: :runtime
36
+ prerelease: false
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - ~>
40
+ - !ruby/object:Gem::Version
41
+ version: '3.1'
42
+ - !ruby/object:Gem::Dependency
43
+ name: cancan
44
+ requirement: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - ~>
47
+ - !ruby/object:Gem::Version
48
+ version: '1.6'
49
+ type: :runtime
50
+ prerelease: false
51
+ version_requirements: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - ~>
54
+ - !ruby/object:Gem::Version
55
+ version: '1.6'
56
+ - !ruby/object:Gem::Dependency
57
+ name: deface
58
+ requirement: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - ~>
61
+ - !ruby/object:Gem::Version
62
+ version: '1.0'
63
+ type: :runtime
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - ~>
68
+ - !ruby/object:Gem::Version
69
+ version: '1.0'
70
+ - !ruby/object:Gem::Dependency
71
+ name: ember-rails
72
+ requirement: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - ~>
75
+ - !ruby/object:Gem::Version
76
+ version: '0.14'
77
+ type: :runtime
78
+ prerelease: false
79
+ version_requirements: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - ~>
82
+ - !ruby/object:Gem::Version
83
+ version: '0.14'
84
+ - !ruby/object:Gem::Dependency
85
+ name: ember-source
86
+ requirement: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - '='
89
+ - !ruby/object:Gem::Version
90
+ version: 1.5.0.beta.3
91
+ type: :runtime
92
+ prerelease: false
93
+ version_requirements: !ruby/object:Gem::Requirement
94
+ requirements:
95
+ - - '='
96
+ - !ruby/object:Gem::Version
97
+ version: 1.5.0.beta.3
98
+ - !ruby/object:Gem::Dependency
99
+ name: ember-data-source
100
+ requirement: !ruby/object:Gem::Requirement
101
+ requirements:
102
+ - - '='
103
+ - !ruby/object:Gem::Version
104
+ version: 1.0.0.beta.7
105
+ type: :runtime
106
+ prerelease: false
107
+ version_requirements: !ruby/object:Gem::Requirement
108
+ requirements:
109
+ - - '='
110
+ - !ruby/object:Gem::Version
111
+ version: 1.0.0.beta.7
112
+ - !ruby/object:Gem::Dependency
113
+ name: font-awesome-sass
114
+ requirement: !ruby/object:Gem::Requirement
115
+ requirements:
116
+ - - ~>
117
+ - !ruby/object:Gem::Version
118
+ version: '4.0'
119
+ type: :runtime
120
+ prerelease: false
121
+ version_requirements: !ruby/object:Gem::Requirement
122
+ requirements:
123
+ - - ~>
124
+ - !ruby/object:Gem::Version
125
+ version: '4.0'
126
+ - !ruby/object:Gem::Dependency
127
+ name: jquery-rails
128
+ requirement: !ruby/object:Gem::Requirement
129
+ requirements:
130
+ - - ~>
131
+ - !ruby/object:Gem::Version
132
+ version: '3.1'
133
+ type: :runtime
134
+ prerelease: false
135
+ version_requirements: !ruby/object:Gem::Requirement
136
+ requirements:
137
+ - - ~>
138
+ - !ruby/object:Gem::Version
139
+ version: '3.1'
140
+ - !ruby/object:Gem::Dependency
141
+ name: kaminari
142
+ requirement: !ruby/object:Gem::Requirement
143
+ requirements:
144
+ - - ~>
145
+ - !ruby/object:Gem::Version
146
+ version: '0.15'
147
+ type: :runtime
148
+ prerelease: false
149
+ version_requirements: !ruby/object:Gem::Requirement
150
+ requirements:
151
+ - - ~>
152
+ - !ruby/object:Gem::Version
153
+ version: '0.15'
154
+ - !ruby/object:Gem::Dependency
155
+ name: local_time
156
+ requirement: !ruby/object:Gem::Requirement
157
+ requirements:
158
+ - - ~>
159
+ - !ruby/object:Gem::Version
160
+ version: '0.3'
161
+ type: :runtime
162
+ prerelease: false
163
+ version_requirements: !ruby/object:Gem::Requirement
164
+ requirements:
165
+ - - ~>
166
+ - !ruby/object:Gem::Version
167
+ version: '0.3'
168
+ - !ruby/object:Gem::Dependency
169
+ name: neat
170
+ requirement: !ruby/object:Gem::Requirement
171
+ requirements:
172
+ - - ~>
173
+ - !ruby/object:Gem::Version
174
+ version: '1.5'
175
+ type: :runtime
176
+ prerelease: false
177
+ version_requirements: !ruby/object:Gem::Requirement
178
+ requirements:
179
+ - - ~>
180
+ - !ruby/object:Gem::Version
181
+ version: '1.5'
182
+ - !ruby/object:Gem::Dependency
183
+ name: pygments.rb
184
+ requirement: !ruby/object:Gem::Requirement
185
+ requirements:
186
+ - - ~>
187
+ - !ruby/object:Gem::Version
188
+ version: '0.5'
189
+ type: :runtime
190
+ prerelease: false
191
+ version_requirements: !ruby/object:Gem::Requirement
192
+ requirements:
193
+ - - ~>
194
+ - !ruby/object:Gem::Version
195
+ version: '0.5'
196
+ - !ruby/object:Gem::Dependency
197
+ name: rails
198
+ requirement: !ruby/object:Gem::Requirement
199
+ requirements:
200
+ - - ~>
201
+ - !ruby/object:Gem::Version
202
+ version: '4.0'
203
+ type: :runtime
204
+ prerelease: false
205
+ version_requirements: !ruby/object:Gem::Requirement
206
+ requirements:
207
+ - - ~>
208
+ - !ruby/object:Gem::Version
209
+ version: '4.0'
210
+ - !ruby/object:Gem::Dependency
211
+ name: redcarpet
212
+ requirement: !ruby/object:Gem::Requirement
213
+ requirements:
214
+ - - ~>
215
+ - !ruby/object:Gem::Version
216
+ version: '3.1'
217
+ type: :runtime
218
+ prerelease: false
219
+ version_requirements: !ruby/object:Gem::Requirement
220
+ requirements:
221
+ - - ~>
222
+ - !ruby/object:Gem::Version
223
+ version: '3.1'
224
+ - !ruby/object:Gem::Dependency
225
+ name: sass-rails
226
+ requirement: !ruby/object:Gem::Requirement
227
+ requirements:
228
+ - - ~>
229
+ - !ruby/object:Gem::Version
230
+ version: '4.0'
231
+ type: :runtime
232
+ prerelease: false
233
+ version_requirements: !ruby/object:Gem::Requirement
234
+ requirements:
235
+ - - ~>
236
+ - !ruby/object:Gem::Version
237
+ version: '4.0'
238
+ - !ruby/object:Gem::Dependency
239
+ name: uglifier
240
+ requirement: !ruby/object:Gem::Requirement
241
+ requirements:
242
+ - - ~>
243
+ - !ruby/object:Gem::Version
244
+ version: '2.4'
245
+ type: :runtime
246
+ prerelease: false
247
+ version_requirements: !ruby/object:Gem::Requirement
248
+ requirements:
249
+ - - ~>
250
+ - !ruby/object:Gem::Version
251
+ version: '2.4'
252
+ - !ruby/object:Gem::Dependency
253
+ name: awesome_print
254
+ requirement: !ruby/object:Gem::Requirement
255
+ requirements:
256
+ - - ~>
257
+ - !ruby/object:Gem::Version
258
+ version: '1.2'
259
+ type: :development
260
+ prerelease: false
261
+ version_requirements: !ruby/object:Gem::Requirement
262
+ requirements:
263
+ - - ~>
264
+ - !ruby/object:Gem::Version
265
+ version: '1.2'
266
+ - !ruby/object:Gem::Dependency
267
+ name: better_errors
268
+ requirement: !ruby/object:Gem::Requirement
269
+ requirements:
270
+ - - ~>
271
+ - !ruby/object:Gem::Version
272
+ version: '1.1'
273
+ type: :development
274
+ prerelease: false
275
+ version_requirements: !ruby/object:Gem::Requirement
276
+ requirements:
277
+ - - ~>
278
+ - !ruby/object:Gem::Version
279
+ version: '1.1'
280
+ - !ruby/object:Gem::Dependency
281
+ name: binding_of_caller
282
+ requirement: !ruby/object:Gem::Requirement
283
+ requirements:
284
+ - - ~>
285
+ - !ruby/object:Gem::Version
286
+ version: '0.7'
287
+ type: :development
288
+ prerelease: false
289
+ version_requirements: !ruby/object:Gem::Requirement
290
+ requirements:
291
+ - - ~>
292
+ - !ruby/object:Gem::Version
293
+ version: '0.7'
294
+ - !ruby/object:Gem::Dependency
295
+ name: capybara
296
+ requirement: !ruby/object:Gem::Requirement
297
+ requirements:
298
+ - - ~>
299
+ - !ruby/object:Gem::Version
300
+ version: '2.2'
301
+ type: :development
302
+ prerelease: false
303
+ version_requirements: !ruby/object:Gem::Requirement
304
+ requirements:
305
+ - - ~>
306
+ - !ruby/object:Gem::Version
307
+ version: '2.2'
308
+ - !ruby/object:Gem::Dependency
309
+ name: database_cleaner
310
+ requirement: !ruby/object:Gem::Requirement
311
+ requirements:
312
+ - - ~>
313
+ - !ruby/object:Gem::Version
314
+ version: '1.2'
315
+ type: :development
316
+ prerelease: false
317
+ version_requirements: !ruby/object:Gem::Requirement
318
+ requirements:
319
+ - - ~>
320
+ - !ruby/object:Gem::Version
321
+ version: '1.2'
322
+ - !ruby/object:Gem::Dependency
323
+ name: dotenv-rails
324
+ requirement: !ruby/object:Gem::Requirement
325
+ requirements:
326
+ - - ~>
327
+ - !ruby/object:Gem::Version
328
+ version: '0.10'
329
+ type: :development
330
+ prerelease: false
331
+ version_requirements: !ruby/object:Gem::Requirement
332
+ requirements:
333
+ - - ~>
334
+ - !ruby/object:Gem::Version
335
+ version: '0.10'
336
+ - !ruby/object:Gem::Dependency
337
+ name: factory_girl_rails
338
+ requirement: !ruby/object:Gem::Requirement
339
+ requirements:
340
+ - - ~>
341
+ - !ruby/object:Gem::Version
342
+ version: '4.4'
343
+ type: :development
344
+ prerelease: false
345
+ version_requirements: !ruby/object:Gem::Requirement
346
+ requirements:
347
+ - - ~>
348
+ - !ruby/object:Gem::Version
349
+ version: '4.4'
350
+ - !ruby/object:Gem::Dependency
351
+ name: foreman
352
+ requirement: !ruby/object:Gem::Requirement
353
+ requirements:
354
+ - - ~>
355
+ - !ruby/object:Gem::Version
356
+ version: '0.63'
357
+ type: :development
358
+ prerelease: false
359
+ version_requirements: !ruby/object:Gem::Requirement
360
+ requirements:
361
+ - - ~>
362
+ - !ruby/object:Gem::Version
363
+ version: '0.63'
364
+ - !ruby/object:Gem::Dependency
365
+ name: guard
366
+ requirement: !ruby/object:Gem::Requirement
367
+ requirements:
368
+ - - ~>
369
+ - !ruby/object:Gem::Version
370
+ version: '2.5'
371
+ type: :development
372
+ prerelease: false
373
+ version_requirements: !ruby/object:Gem::Requirement
374
+ requirements:
375
+ - - ~>
376
+ - !ruby/object:Gem::Version
377
+ version: '2.5'
378
+ - !ruby/object:Gem::Dependency
379
+ name: guard-rspec
380
+ requirement: !ruby/object:Gem::Requirement
381
+ requirements:
382
+ - - ~>
383
+ - !ruby/object:Gem::Version
384
+ version: '4.2'
385
+ type: :development
386
+ prerelease: false
387
+ version_requirements: !ruby/object:Gem::Requirement
388
+ requirements:
389
+ - - ~>
390
+ - !ruby/object:Gem::Version
391
+ version: '4.2'
392
+ - !ruby/object:Gem::Dependency
393
+ name: puma
394
+ requirement: !ruby/object:Gem::Requirement
395
+ requirements:
396
+ - - ~>
397
+ - !ruby/object:Gem::Version
398
+ version: '2.8'
399
+ type: :development
400
+ prerelease: false
401
+ version_requirements: !ruby/object:Gem::Requirement
402
+ requirements:
403
+ - - ~>
404
+ - !ruby/object:Gem::Version
405
+ version: '2.8'
406
+ - !ruby/object:Gem::Dependency
407
+ name: quiet_assets
408
+ requirement: !ruby/object:Gem::Requirement
409
+ requirements:
410
+ - - ~>
411
+ - !ruby/object:Gem::Version
412
+ version: '1.0'
413
+ type: :development
414
+ prerelease: false
415
+ version_requirements: !ruby/object:Gem::Requirement
416
+ requirements:
417
+ - - ~>
418
+ - !ruby/object:Gem::Version
419
+ version: '1.0'
420
+ - !ruby/object:Gem::Dependency
421
+ name: qunit-rails
422
+ requirement: !ruby/object:Gem::Requirement
423
+ requirements:
424
+ - - ~>
425
+ - !ruby/object:Gem::Version
426
+ version: 0.0.7
427
+ type: :development
428
+ prerelease: false
429
+ version_requirements: !ruby/object:Gem::Requirement
430
+ requirements:
431
+ - - ~>
432
+ - !ruby/object:Gem::Version
433
+ version: 0.0.7
434
+ - !ruby/object:Gem::Dependency
435
+ name: rake
436
+ requirement: !ruby/object:Gem::Requirement
437
+ requirements:
438
+ - - '>='
439
+ - !ruby/object:Gem::Version
440
+ version: '0'
441
+ type: :development
442
+ prerelease: false
443
+ version_requirements: !ruby/object:Gem::Requirement
444
+ requirements:
445
+ - - '>='
446
+ - !ruby/object:Gem::Version
447
+ version: '0'
448
+ - !ruby/object:Gem::Dependency
449
+ name: rb-fsevent
450
+ requirement: !ruby/object:Gem::Requirement
451
+ requirements:
452
+ - - ~>
453
+ - !ruby/object:Gem::Version
454
+ version: '0.9'
455
+ type: :development
456
+ prerelease: false
457
+ version_requirements: !ruby/object:Gem::Requirement
458
+ requirements:
459
+ - - ~>
460
+ - !ruby/object:Gem::Version
461
+ version: '0.9'
462
+ - !ruby/object:Gem::Dependency
463
+ name: rspec-rails
464
+ requirement: !ruby/object:Gem::Requirement
465
+ requirements:
466
+ - - ~>
467
+ - !ruby/object:Gem::Version
468
+ version: '2.14'
469
+ type: :development
470
+ prerelease: false
471
+ version_requirements: !ruby/object:Gem::Requirement
472
+ requirements:
473
+ - - ~>
474
+ - !ruby/object:Gem::Version
475
+ version: '2.14'
476
+ - !ruby/object:Gem::Dependency
477
+ name: sqlite3
478
+ requirement: !ruby/object:Gem::Requirement
479
+ requirements:
480
+ - - ~>
481
+ - !ruby/object:Gem::Version
482
+ version: '1.3'
483
+ type: :development
484
+ prerelease: false
485
+ version_requirements: !ruby/object:Gem::Requirement
486
+ requirements:
487
+ - - ~>
488
+ - !ruby/object:Gem::Version
489
+ version: '1.3'
490
+ - !ruby/object:Gem::Dependency
491
+ name: terminal-notifier-guard
492
+ requirement: !ruby/object:Gem::Requirement
493
+ requirements:
494
+ - - ~>
495
+ - !ruby/object:Gem::Version
496
+ version: '1.5'
497
+ type: :development
498
+ prerelease: false
499
+ version_requirements: !ruby/object:Gem::Requirement
500
+ requirements:
501
+ - - ~>
502
+ - !ruby/object:Gem::Version
503
+ version: '1.5'
504
+ description: Blogelator is a mountable Rails::Engine for adding a blog to your Rails
505
+ app.
506
+ email:
507
+ - brian@81designs.com
508
+ - matthew@81designs.com
509
+ executables: []
510
+ extensions: []
511
+ extra_rdoc_files: []
512
+ files:
513
+ - LICENSE
514
+ - README.md
515
+ - Rakefile
516
+ - app/assets/images/blogelator/blogelator-logo.svg
517
+ - app/assets/javascripts/blogelator/admin.js
518
+ - app/assets/javascripts/blogelator/application.js
519
+ - app/assets/javascripts/blogelator/components/markdown_editor_component.js
520
+ - app/assets/javascripts/blogelator/components/save_button_component.js
521
+ - app/assets/javascripts/blogelator/config/marked.js
522
+ - app/assets/javascripts/blogelator/config/router.js
523
+ - app/assets/javascripts/blogelator/config/routes.js
524
+ - app/assets/javascripts/blogelator/config/serializer.js
525
+ - app/assets/javascripts/blogelator/config/store.js
526
+ - app/assets/javascripts/blogelator/controllers/application_controller.js
527
+ - app/assets/javascripts/blogelator/controllers/posts/posts_edit_controller.js
528
+ - app/assets/javascripts/blogelator/controllers/posts/posts_index_controller.js
529
+ - app/assets/javascripts/blogelator/controllers/posts/posts_new_controller.js
530
+ - app/assets/javascripts/blogelator/controllers/posts/posts_show_controller.js
531
+ - app/assets/javascripts/blogelator/models/post.js
532
+ - app/assets/javascripts/blogelator/routes/index_route.js
533
+ - app/assets/javascripts/blogelator/routes/posts_edit_route.js
534
+ - app/assets/javascripts/blogelator/routes/posts_index_route.js
535
+ - app/assets/javascripts/blogelator/routes/posts_new_route.js
536
+ - app/assets/javascripts/blogelator/routes/posts_route.js
537
+ - app/assets/javascripts/blogelator/routes/posts_show_route.js
538
+ - app/assets/javascripts/blogelator/templates/application.handlebars
539
+ - app/assets/javascripts/blogelator/templates/components/markdown-editor.handlebars
540
+ - app/assets/javascripts/blogelator/templates/components/save-button.handlebars
541
+ - app/assets/javascripts/blogelator/templates/posts/_footer.handlebars
542
+ - app/assets/javascripts/blogelator/templates/posts/_form.handlebars
543
+ - app/assets/javascripts/blogelator/templates/posts/_form_action_bar.handlebars
544
+ - app/assets/javascripts/blogelator/templates/posts/_show_action_bar.handlebars
545
+ - app/assets/javascripts/blogelator/templates/posts/edit.handlebars
546
+ - app/assets/javascripts/blogelator/templates/posts/index.handlebars
547
+ - app/assets/javascripts/blogelator/templates/posts/new.handlebars
548
+ - app/assets/javascripts/blogelator/templates/posts/show.handlebars
549
+ - app/assets/stylesheets/blogelator/admin/all.scss
550
+ - app/assets/stylesheets/blogelator/admin/components/markdown_editor.scss
551
+ - app/assets/stylesheets/blogelator/admin/components/save_button.scss
552
+ - app/assets/stylesheets/blogelator/admin/layout.scss
553
+ - app/assets/stylesheets/blogelator/admin/posts/_form.scss
554
+ - app/assets/stylesheets/blogelator/admin/posts/_form_action_bar.scss
555
+ - app/assets/stylesheets/blogelator/admin/posts/_posts_list.scss
556
+ - app/assets/stylesheets/blogelator/admin/posts/edit.scss
557
+ - app/assets/stylesheets/blogelator/admin/posts/index.scss
558
+ - app/assets/stylesheets/blogelator/admin/posts/new.scss
559
+ - app/assets/stylesheets/blogelator/admin/posts/show.scss
560
+ - app/assets/stylesheets/blogelator/application/all.scss
561
+ - app/assets/stylesheets/blogelator/application/layout.scss
562
+ - app/assets/stylesheets/blogelator/application/posts/index.scss
563
+ - app/assets/stylesheets/blogelator/application/posts/show.scss
564
+ - app/assets/stylesheets/blogelator/mixins/blogelator_button.scss
565
+ - app/assets/stylesheets/blogelator/mixins/blogelator_logo.scss
566
+ - app/assets/stylesheets/blogelator/shared/post.scss
567
+ - app/assets/stylesheets/blogelator/shared/typography/code_highlighting.scss
568
+ - app/assets/stylesheets/blogelator/shared/typography/forms.scss
569
+ - app/assets/stylesheets/blogelator/shared/typography/headings.scss
570
+ - app/assets/stylesheets/blogelator/shared/typography/lists.scss
571
+ - app/controllers/blogelator/admin/application_controller.rb
572
+ - app/controllers/blogelator/admin/images_controller.rb
573
+ - app/controllers/blogelator/admin/posts_controller.rb
574
+ - app/controllers/blogelator/application_controller.rb
575
+ - app/controllers/blogelator/posts_controller.rb
576
+ - app/controllers/concerns/blogelator/admin/auth.rb
577
+ - app/helpers/blogelator/admin/posts_helper.rb
578
+ - app/helpers/blogelator/posts_helper.rb
579
+ - app/models/blogelator/ability.rb
580
+ - app/models/blogelator/html_renderer.rb
581
+ - app/models/blogelator/post.rb
582
+ - app/models/blogelator/tag.rb
583
+ - app/serializers/blogelator/post_serializer.rb
584
+ - app/views/blogelator/admin/posts/index.html.erb
585
+ - app/views/blogelator/posts/_post.html.erb
586
+ - app/views/blogelator/posts/index.html.erb
587
+ - app/views/blogelator/posts/show.html.erb
588
+ - app/views/layouts/blogelator/_footer.html.erb
589
+ - app/views/layouts/blogelator/_head.html.erb
590
+ - app/views/layouts/blogelator/_header.html.erb
591
+ - app/views/layouts/blogelator/admin.html.erb
592
+ - app/views/layouts/blogelator/application.html.erb
593
+ - config/jshint.json
594
+ - config/routes.rb
595
+ - db/migrate/20140221192000_create_blogelator_posts.rb
596
+ - db/migrate/20140221204230_add_slug_and_change_user_to_author.rb
597
+ - db/migrate/20140221212026_create_blogelator_tags.rb
598
+ - db/migrate/20140224024607_change_posts_properties_to_have_defaults.rb
599
+ - db/migrate/20140224175024_add_slugs_to_existing_posts.rb
600
+ - db/migrate/20140224192058_add_published_at_to_posts.rb
601
+ - db/migrate/20140303015004_add_summary_to_posts.rb
602
+ - lib/assets/stylesheets/blogelator/_variables_sample.scss
603
+ - lib/blogelator.rb
604
+ - lib/blogelator/engine.rb
605
+ - lib/blogelator/version.rb
606
+ - lib/generators/blogelator/install_generator.rb
607
+ - spec/dummy/README.rdoc
608
+ - spec/dummy/Rakefile
609
+ - spec/dummy/app/assets/javascripts/application.js
610
+ - spec/dummy/app/assets/javascripts/features/user_visits_admin_page_spec.js
611
+ - spec/dummy/app/assets/javascripts/features/user_visits_post_page_spec.js
612
+ - spec/dummy/app/assets/javascripts/fixtures/post.js
613
+ - spec/dummy/app/assets/javascripts/test_helper.js
614
+ - spec/dummy/app/assets/stylesheets/application.css
615
+ - spec/dummy/app/assets/stylesheets/blogelator/_variables.scss
616
+ - spec/dummy/app/assets/stylesheets/blogelator/admin.css.scss
617
+ - spec/dummy/app/assets/stylesheets/blogelator/application.css.scss
618
+ - spec/dummy/app/assets/stylesheets/test_helper.css
619
+ - spec/dummy/app/controllers/application_controller.rb
620
+ - spec/dummy/app/helpers/application_helper.rb
621
+ - spec/dummy/app/models/blogelator/ability.rb
622
+ - spec/dummy/app/views/layouts/application.html.erb
623
+ - spec/dummy/app/views/q_unit/rails/test/index.html.erb
624
+ - spec/dummy/app/views/qunit/rails/test/index.html.erb
625
+ - spec/dummy/bin/bundle
626
+ - spec/dummy/bin/rails
627
+ - spec/dummy/bin/rake
628
+ - spec/dummy/config.ru
629
+ - spec/dummy/config/application.rb
630
+ - spec/dummy/config/boot.rb
631
+ - spec/dummy/config/database.yml
632
+ - spec/dummy/config/environment.rb
633
+ - spec/dummy/config/environments/development.rb
634
+ - spec/dummy/config/environments/production.rb
635
+ - spec/dummy/config/environments/test.rb
636
+ - spec/dummy/config/initializers/backtrace_silencers.rb
637
+ - spec/dummy/config/initializers/blogelator.rb
638
+ - spec/dummy/config/initializers/filter_parameter_logging.rb
639
+ - spec/dummy/config/initializers/inflections.rb
640
+ - spec/dummy/config/initializers/mime_types.rb
641
+ - spec/dummy/config/initializers/secret_token.rb
642
+ - spec/dummy/config/initializers/session_store.rb
643
+ - spec/dummy/config/initializers/wrap_parameters.rb
644
+ - spec/dummy/config/locales/en.yml
645
+ - spec/dummy/config/routes.rb
646
+ - spec/dummy/db/development.sqlite3
647
+ - spec/dummy/db/migrate/20140221215439_create_blogelator_posts.blogelator.rb
648
+ - spec/dummy/db/migrate/20140221215440_add_slug_and_change_user_to_author.blogelator.rb
649
+ - spec/dummy/db/migrate/20140224024931_create_blogelator_tags.blogelator.rb
650
+ - spec/dummy/db/migrate/20140224025218_change_posts_properties_to_have_defaults.blogelator.rb
651
+ - spec/dummy/db/migrate/20140224205646_add_slugs_to_existing_posts.blogelator.rb
652
+ - spec/dummy/db/migrate/20140224205647_add_published_at_to_posts.blogelator.rb
653
+ - spec/dummy/db/migrate/20140303015133_add_summary_to_posts.blogelator.rb
654
+ - spec/dummy/db/production.sqlite3
655
+ - spec/dummy/db/schema.rb
656
+ - spec/dummy/db/test.sqlite3
657
+ - spec/dummy/log/development.log
658
+ - spec/dummy/log/production.log
659
+ - spec/dummy/log/test.log
660
+ - spec/dummy/public/404.html
661
+ - spec/dummy/public/422.html
662
+ - spec/dummy/public/500.html
663
+ - spec/dummy/public/favicon.ico
664
+ - spec/dummy/public/index.html.erb
665
+ - spec/dummy/tmp/ember-rails/ember-data.js
666
+ - spec/dummy/tmp/ember-rails/ember.js
667
+ - spec/factories/post.rb
668
+ - spec/features/user_visits_blog_post_spec.rb
669
+ - spec/features/user_visits_blog_spec.rb
670
+ - spec/models/blogelator/post_spec.rb
671
+ - spec/qunit_runner.js
672
+ - spec/spec_helper.rb
673
+ homepage: http://github.com/codelation/blogelator
674
+ licenses:
675
+ - MIT
676
+ metadata: {}
677
+ post_install_message:
678
+ rdoc_options: []
679
+ require_paths:
680
+ - lib
681
+ required_ruby_version: !ruby/object:Gem::Requirement
682
+ requirements:
683
+ - - '>='
684
+ - !ruby/object:Gem::Version
685
+ version: '0'
686
+ required_rubygems_version: !ruby/object:Gem::Requirement
687
+ requirements:
688
+ - - '>='
689
+ - !ruby/object:Gem::Version
690
+ version: '0'
691
+ requirements: []
692
+ rubyforge_project:
693
+ rubygems_version: 2.2.2
694
+ signing_key:
695
+ specification_version: 4
696
+ summary: A blog in the form of a mountable Rails::Engine.
697
+ test_files:
698
+ - spec/dummy/app/assets/javascripts/application.js
699
+ - spec/dummy/app/assets/javascripts/features/user_visits_admin_page_spec.js
700
+ - spec/dummy/app/assets/javascripts/features/user_visits_post_page_spec.js
701
+ - spec/dummy/app/assets/javascripts/fixtures/post.js
702
+ - spec/dummy/app/assets/javascripts/test_helper.js
703
+ - spec/dummy/app/assets/stylesheets/application.css
704
+ - spec/dummy/app/assets/stylesheets/blogelator/_variables.scss
705
+ - spec/dummy/app/assets/stylesheets/blogelator/admin.css.scss
706
+ - spec/dummy/app/assets/stylesheets/blogelator/application.css.scss
707
+ - spec/dummy/app/assets/stylesheets/test_helper.css
708
+ - spec/dummy/app/controllers/application_controller.rb
709
+ - spec/dummy/app/helpers/application_helper.rb
710
+ - spec/dummy/app/models/blogelator/ability.rb
711
+ - spec/dummy/app/views/layouts/application.html.erb
712
+ - spec/dummy/app/views/q_unit/rails/test/index.html.erb
713
+ - spec/dummy/app/views/qunit/rails/test/index.html.erb
714
+ - spec/dummy/bin/bundle
715
+ - spec/dummy/bin/rails
716
+ - spec/dummy/bin/rake
717
+ - spec/dummy/config/application.rb
718
+ - spec/dummy/config/boot.rb
719
+ - spec/dummy/config/database.yml
720
+ - spec/dummy/config/environment.rb
721
+ - spec/dummy/config/environments/development.rb
722
+ - spec/dummy/config/environments/production.rb
723
+ - spec/dummy/config/environments/test.rb
724
+ - spec/dummy/config/initializers/backtrace_silencers.rb
725
+ - spec/dummy/config/initializers/blogelator.rb
726
+ - spec/dummy/config/initializers/filter_parameter_logging.rb
727
+ - spec/dummy/config/initializers/inflections.rb
728
+ - spec/dummy/config/initializers/mime_types.rb
729
+ - spec/dummy/config/initializers/secret_token.rb
730
+ - spec/dummy/config/initializers/session_store.rb
731
+ - spec/dummy/config/initializers/wrap_parameters.rb
732
+ - spec/dummy/config/locales/en.yml
733
+ - spec/dummy/config/routes.rb
734
+ - spec/dummy/config.ru
735
+ - spec/dummy/db/development.sqlite3
736
+ - spec/dummy/db/migrate/20140221215439_create_blogelator_posts.blogelator.rb
737
+ - spec/dummy/db/migrate/20140221215440_add_slug_and_change_user_to_author.blogelator.rb
738
+ - spec/dummy/db/migrate/20140224024931_create_blogelator_tags.blogelator.rb
739
+ - spec/dummy/db/migrate/20140224025218_change_posts_properties_to_have_defaults.blogelator.rb
740
+ - spec/dummy/db/migrate/20140224205646_add_slugs_to_existing_posts.blogelator.rb
741
+ - spec/dummy/db/migrate/20140224205647_add_published_at_to_posts.blogelator.rb
742
+ - spec/dummy/db/migrate/20140303015133_add_summary_to_posts.blogelator.rb
743
+ - spec/dummy/db/production.sqlite3
744
+ - spec/dummy/db/schema.rb
745
+ - spec/dummy/db/test.sqlite3
746
+ - spec/dummy/log/development.log
747
+ - spec/dummy/log/production.log
748
+ - spec/dummy/log/test.log
749
+ - spec/dummy/public/404.html
750
+ - spec/dummy/public/422.html
751
+ - spec/dummy/public/500.html
752
+ - spec/dummy/public/favicon.ico
753
+ - spec/dummy/public/index.html.erb
754
+ - spec/dummy/Rakefile
755
+ - spec/dummy/README.rdoc
756
+ - spec/dummy/tmp/ember-rails/ember-data.js
757
+ - spec/dummy/tmp/ember-rails/ember.js
758
+ - spec/factories/post.rb
759
+ - spec/features/user_visits_blog_post_spec.rb
760
+ - spec/features/user_visits_blog_spec.rb
761
+ - spec/models/blogelator/post_spec.rb
762
+ - spec/qunit_runner.js
763
+ - spec/spec_helper.rb
764
+ has_rdoc: