ecrire 0.20.0

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 (233) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +20 -0
  3. data/Gemfile +4 -0
  4. data/LICENCE +9 -0
  5. data/README.md +62 -0
  6. data/Rakefile +72 -0
  7. data/bin/ecrire +42 -0
  8. data/ecrire.gemspec +26 -0
  9. data/lib/ecrire/app/assets/javascripts/admin/editor/content.coffee +319 -0
  10. data/lib/ecrire/app/assets/javascripts/admin/editor/ext.coffee +94 -0
  11. data/lib/ecrire/app/assets/javascripts/admin/editor/extensions/clipboard.coffee +98 -0
  12. data/lib/ecrire/app/assets/javascripts/admin/editor/extensions/image.coffee +19 -0
  13. data/lib/ecrire/app/assets/javascripts/admin/editor/navigation/delete.js.coffee +11 -0
  14. data/lib/ecrire/app/assets/javascripts/admin/editor/navigation/draft.js.coffee +42 -0
  15. data/lib/ecrire/app/assets/javascripts/admin/editor/navigation/help.js.coffee +6 -0
  16. data/lib/ecrire/app/assets/javascripts/admin/editor/navigation/save.js.coffee +61 -0
  17. data/lib/ecrire/app/assets/javascripts/admin/editor/navigation/sticky.js.coffee +11 -0
  18. data/lib/ecrire/app/assets/javascripts/admin/editor/navigation/toggle.js.coffee +10 -0
  19. data/lib/ecrire/app/assets/javascripts/admin/editor/parsers/code.coffee +39 -0
  20. data/lib/ecrire/app/assets/javascripts/admin/editor/parsers/heading.coffee +19 -0
  21. data/lib/ecrire/app/assets/javascripts/admin/editor/parsers/image.coffee +129 -0
  22. data/lib/ecrire/app/assets/javascripts/admin/editor/parsers/link.coffee +44 -0
  23. data/lib/ecrire/app/assets/javascripts/admin/editor/parsers/lists.coffee +48 -0
  24. data/lib/ecrire/app/assets/javascripts/admin/editor/parsers/word.coffee +56 -0
  25. data/lib/ecrire/app/assets/javascripts/admin/posts/header.coffee +69 -0
  26. data/lib/ecrire/app/assets/javascripts/admin/posts/new.js.coffee +7 -0
  27. data/lib/ecrire/app/assets/javascripts/admin/posts/title.coffee +15 -0
  28. data/lib/ecrire/app/assets/javascripts/admin.js +5 -0
  29. data/lib/ecrire/app/assets/javascripts/application.js +21 -0
  30. data/lib/ecrire/app/assets/javascripts/shared/overlay.js.coffee +29 -0
  31. data/lib/ecrire/app/assets/javascripts/shared/popup.js.coffee +7 -0
  32. data/lib/ecrire/app/assets/javascripts/vendor/moment.js +3043 -0
  33. data/lib/ecrire/app/assets/javascripts/vendor/prism/prism.ruby.js +25 -0
  34. data/lib/ecrire/app/assets/javascripts/vendor/prism.js +578 -0
  35. data/lib/ecrire/app/assets/stylesheets/admin/base.css.scss +98 -0
  36. data/lib/ecrire/app/assets/stylesheets/admin/documentation.css.scss +28 -0
  37. data/lib/ecrire/app/assets/stylesheets/admin/editor/base.css.scss +41 -0
  38. data/lib/ecrire/app/assets/stylesheets/admin/editor/content.css.scss +57 -0
  39. data/lib/ecrire/app/assets/stylesheets/admin/editor/header.css.scss +62 -0
  40. data/lib/ecrire/app/assets/stylesheets/admin/editor/image.css.scss +58 -0
  41. data/lib/ecrire/app/assets/stylesheets/admin/editor/publish.css.scss +40 -0
  42. data/lib/ecrire/app/assets/stylesheets/admin/editor/save.css.scss +44 -0
  43. data/lib/ecrire/app/assets/stylesheets/admin/images.css.scss +64 -0
  44. data/lib/ecrire/app/assets/stylesheets/admin/loading.css.scss +48 -0
  45. data/lib/ecrire/app/assets/stylesheets/admin/mixins/animations.css.scss +30 -0
  46. data/lib/ecrire/app/assets/stylesheets/admin/mixins/form.css.scss +22 -0
  47. data/lib/ecrire/app/assets/stylesheets/admin/navigation.css.scss +96 -0
  48. data/lib/ecrire/app/assets/stylesheets/admin/posts.css.scss +46 -0
  49. data/lib/ecrire/app/assets/stylesheets/admin/variables.css.scss +7 -0
  50. data/lib/ecrire/app/assets/stylesheets/admin.css.scss +5 -0
  51. data/lib/ecrire/app/assets/stylesheets/application.css.scss +12 -0
  52. data/lib/ecrire/app/assets/stylesheets/sessions.css.scss +97 -0
  53. data/lib/ecrire/app/assets/stylesheets/shared/main.css.scss +5 -0
  54. data/lib/ecrire/app/assets/stylesheets/shared/popup.css.scss +76 -0
  55. data/lib/ecrire/app/assets/stylesheets/vendor/prism/ruby.scss +11 -0
  56. data/lib/ecrire/app/assets/stylesheets/vendor/prism.scss +149 -0
  57. data/lib/ecrire/app/controllers/admin/application_controller.rb +16 -0
  58. data/lib/ecrire/app/controllers/admin/configurations/images_controller.rb +28 -0
  59. data/lib/ecrire/app/controllers/admin/images_controller.rb +35 -0
  60. data/lib/ecrire/app/controllers/admin/labels_controller.rb +18 -0
  61. data/lib/ecrire/app/controllers/admin/partials_controller.rb +43 -0
  62. data/lib/ecrire/app/controllers/admin/posts_controller.rb +90 -0
  63. data/lib/ecrire/app/controllers/admin/properties_controller.rb +35 -0
  64. data/lib/ecrire/app/controllers/application_controller.rb +29 -0
  65. data/lib/ecrire/app/controllers/concerns/.keep +0 -0
  66. data/lib/ecrire/app/controllers/ecrire/posts_controller.rb +42 -0
  67. data/lib/ecrire/app/controllers/images_controller.rb +2 -0
  68. data/lib/ecrire/app/controllers/onboarding/databases_controller.rb +67 -0
  69. data/lib/ecrire/app/controllers/onboarding/users_controller.rb +32 -0
  70. data/lib/ecrire/app/controllers/onboarding_controller.rb +20 -0
  71. data/lib/ecrire/app/controllers/partials_controller.rb +8 -0
  72. data/lib/ecrire/app/controllers/sessions_controller.rb +23 -0
  73. data/lib/ecrire/app/controllers/static_controller.rb +5 -0
  74. data/lib/ecrire/app/forms/admin/image_builder.rb +24 -0
  75. data/lib/ecrire/app/forms/admin/partial_builder.rb +105 -0
  76. data/lib/ecrire/app/forms/admin/post_builder.rb +47 -0
  77. data/lib/ecrire/app/helpers/admin/images_helper.rb +60 -0
  78. data/lib/ecrire/app/helpers/admin/labels_helper.rb +26 -0
  79. data/lib/ecrire/app/helpers/admin/posts_helper.rb +26 -0
  80. data/lib/ecrire/app/helpers/application_helper.rb +64 -0
  81. data/lib/ecrire/app/helpers/content_tag_helper.rb +91 -0
  82. data/lib/ecrire/app/helpers/open_graph_helper.rb +45 -0
  83. data/lib/ecrire/app/helpers/posts_helper.rb +19 -0
  84. data/lib/ecrire/app/models/admin/image.rb +108 -0
  85. data/lib/ecrire/app/models/admin/partial.rb +4 -0
  86. data/lib/ecrire/app/models/admin/post.rb +56 -0
  87. data/lib/ecrire/app/models/concerns/.keep +0 -0
  88. data/lib/ecrire/app/models/image.rb +5 -0
  89. data/lib/ecrire/app/models/label.rb +3 -0
  90. data/lib/ecrire/app/models/partial.rb +3 -0
  91. data/lib/ecrire/app/models/post.rb +90 -0
  92. data/lib/ecrire/app/models/property/image.rb +30 -0
  93. data/lib/ecrire/app/models/property/label.rb +28 -0
  94. data/lib/ecrire/app/models/user.rb +31 -0
  95. data/lib/ecrire/app/strategies/password_strategy.rb +17 -0
  96. data/lib/ecrire/app/views/admin/configurations/images/complete.html.erb +6 -0
  97. data/lib/ecrire/app/views/admin/configurations/images/show.html.erb +14 -0
  98. data/lib/ecrire/app/views/admin/images/_errors.html.erb +14 -0
  99. data/lib/ecrire/app/views/admin/images/_form.html.erb +15 -0
  100. data/lib/ecrire/app/views/admin/images/destroy.js.erb +0 -0
  101. data/lib/ecrire/app/views/admin/images/errors.js.erb +1 -0
  102. data/lib/ecrire/app/views/admin/images/update.js.erb +1 -0
  103. data/lib/ecrire/app/views/admin/posts/_documentation.html.erb +61 -0
  104. data/lib/ecrire/app/views/admin/posts/_list.html.erb +18 -0
  105. data/lib/ecrire/app/views/admin/posts/_post.html.erb +3 -0
  106. data/lib/ecrire/app/views/admin/posts/edit.html.erb +73 -0
  107. data/lib/ecrire/app/views/admin/posts/help.js.erb +1 -0
  108. data/lib/ecrire/app/views/admin/posts/index.js.erb +1 -0
  109. data/lib/ecrire/app/views/admin/posts/title.html.erb +10 -0
  110. data/lib/ecrire/app/views/admin/posts/update/content.js.erb +1 -0
  111. data/lib/ecrire/app/views/admin/posts/update/title.js.erb +1 -0
  112. data/lib/ecrire/app/views/admin/properties/image/create.js.erb +14 -0
  113. data/lib/ecrire/app/views/admin/properties/image/destroy.js.erb +6 -0
  114. data/lib/ecrire/app/views/admin/properties/label/create.js.erb +8 -0
  115. data/lib/ecrire/app/views/admin/properties/label/destroy.js.erb +2 -0
  116. data/lib/ecrire/app/views/layouts/admin/application.html.erb +47 -0
  117. data/lib/ecrire/app/views/partials/show.html.erb +14 -0
  118. data/lib/ecrire/app/views/sessions/_form.html.erb +18 -0
  119. data/lib/ecrire/app/views/sessions/_navigation.html.erb +24 -0
  120. data/lib/ecrire/app/views/sessions/new.html.erb +1 -0
  121. data/lib/ecrire/application.rb +18 -0
  122. data/lib/ecrire/commands/base.rb +9 -0
  123. data/lib/ecrire/commands/console.rb +21 -0
  124. data/lib/ecrire/commands/new.rb +47 -0
  125. data/lib/ecrire/commands/server.rb +27 -0
  126. data/lib/ecrire/commands.rb +19 -0
  127. data/lib/ecrire/config/environment/development.rb +12 -0
  128. data/lib/ecrire/config/environment/production.rb +12 -0
  129. data/lib/ecrire/config/environment/test.rb +3 -0
  130. data/lib/ecrire/config/environment.rb +46 -0
  131. data/lib/ecrire/config/onboarding_routes.rb +11 -0
  132. data/lib/ecrire/config/routes.rb +32 -0
  133. data/lib/ecrire/db/migrate/20131111222709_create_posts.rb +16 -0
  134. data/lib/ecrire/db/migrate/20131113200949_create_users.rb +12 -0
  135. data/lib/ecrire/db/migrate/20131114205041_add_excerpt_to_post.rb +5 -0
  136. data/lib/ecrire/db/migrate/20131221181640_add_javascript_to_posts.rb +5 -0
  137. data/lib/ecrire/db/migrate/20131221195338_create_partials.rb +12 -0
  138. data/lib/ecrire/db/migrate/20140115215122_create_images.rb +12 -0
  139. data/lib/ecrire/db/migrate/20140209144412_add_favorite_flag_to_image.rb +5 -0
  140. data/lib/ecrire/db/migrate/20140617224837_create_labels.rb +12 -0
  141. data/lib/ecrire/db/migrate/20140618321984_add_properties_to_posts.rb +6 -0
  142. data/lib/ecrire/db/migrate/20150113839713_convert_markdown_in_post_content.rb +6 -0
  143. data/lib/ecrire/db/migrate/20150120093481_add_preview_to_posts.rb +8 -0
  144. data/lib/ecrire/db/schema.rb +76 -0
  145. data/lib/ecrire/locales/admin/configurations/images/en.yml +3 -0
  146. data/lib/ecrire/locales/admin/en.yml +26 -0
  147. data/lib/ecrire/locales/admin/images/en.yml +5 -0
  148. data/lib/ecrire/locales/admin/partials/en.yml +18 -0
  149. data/lib/ecrire/locales/admin/posts/en.yml +14 -0
  150. data/lib/ecrire/locales/en.yml +9 -0
  151. data/lib/ecrire/onboarding/assets/images/.keep +0 -0
  152. data/lib/ecrire/onboarding/assets/images/background.png +0 -0
  153. data/lib/ecrire/onboarding/assets/images/github-logo.png +0 -0
  154. data/lib/ecrire/onboarding/assets/images/profile.png +0 -0
  155. data/lib/ecrire/onboarding/assets/images/twitter-logo.png +0 -0
  156. data/lib/ecrire/onboarding/assets/javascripts/base.js +2 -0
  157. data/lib/ecrire/onboarding/assets/javascripts/databases/information.js.coffee +17 -0
  158. data/lib/ecrire/onboarding/assets/javascripts/message.js.coffee +5 -0
  159. data/lib/ecrire/onboarding/assets/stylesheets/base.css.scss +80 -0
  160. data/lib/ecrire/onboarding/assets/stylesheets/complete.css.scss +3 -0
  161. data/lib/ecrire/onboarding/assets/stylesheets/fonts.css.scss +17 -0
  162. data/lib/ecrire/onboarding/assets/stylesheets/form.css.scss +25 -0
  163. data/lib/ecrire/onboarding/assets/stylesheets/message.css.scss +11 -0
  164. data/lib/ecrire/onboarding/assets/stylesheets/terminal.css.scss +16 -0
  165. data/lib/ecrire/onboarding/assets/stylesheets/variables.css.scss +3 -0
  166. data/lib/ecrire/onboarding/assets/stylesheets/welcome.css.scss +62 -0
  167. data/lib/ecrire/onboarding/views/layouts/application.html.erb +16 -0
  168. data/lib/ecrire/onboarding/views/onboarding/complete.html.erb +6 -0
  169. data/lib/ecrire/onboarding/views/onboarding/databases/index.html.erb +34 -0
  170. data/lib/ecrire/onboarding/views/onboarding/users/index.html.erb +16 -0
  171. data/lib/ecrire/onboarding/views/onboarding/welcome.html.erb +12 -0
  172. data/lib/ecrire/railtie/onboarding.rb +63 -0
  173. data/lib/ecrire/railtie/theme.rb +69 -0
  174. data/lib/ecrire/railtie.rb +30 -0
  175. data/lib/ecrire/tasks/assets.rake +15 -0
  176. data/lib/ecrire/tasks/routes.rake +6 -0
  177. data/lib/ecrire/template/Gemfile +31 -0
  178. data/lib/ecrire/template/Rakefile +4 -0
  179. data/lib/ecrire/template/assets/images/.keep +0 -0
  180. data/lib/ecrire/template/assets/javascripts/base.js.coffee +0 -0
  181. data/lib/ecrire/template/assets/javascripts/post.js.coffee +0 -0
  182. data/lib/ecrire/template/assets/stylesheets/base.css.scss +86 -0
  183. data/lib/ecrire/template/assets/stylesheets/code.css.scss +24 -0
  184. data/lib/ecrire/template/assets/stylesheets/footer.css.scss +5 -0
  185. data/lib/ecrire/template/assets/stylesheets/header.css.scss +18 -0
  186. data/lib/ecrire/template/assets/stylesheets/home.css.scss +35 -0
  187. data/lib/ecrire/template/config.ru +4 -0
  188. data/lib/ecrire/template/controllers/posts_controller.rb +2 -0
  189. data/lib/ecrire/template/helpers/blog_helper.rb +2 -0
  190. data/lib/ecrire/template/views/layouts/application.html.erb +35 -0
  191. data/lib/ecrire/template/views/posts/_post.html.erb +9 -0
  192. data/lib/ecrire/template/views/posts/index.html.erb +13 -0
  193. data/lib/ecrire/template/views/posts/show.html.erb +7 -0
  194. data/lib/ecrire/template/views/static/about.html +0 -0
  195. data/lib/ecrire/template/views/static/customize/_helper.html +7 -0
  196. data/lib/ecrire/template/views/static/customize/_helper_used.html +6 -0
  197. data/lib/ecrire/template/views/static/customize/_image.html +1 -0
  198. data/lib/ecrire/template/views/static/customize/_index.html +1 -0
  199. data/lib/ecrire/template/views/static/customize/_javascript.html +1 -0
  200. data/lib/ecrire/template/views/static/customize/_layout.html.erb +15 -0
  201. data/lib/ecrire/template/views/static/customize/_post.html +3 -0
  202. data/lib/ecrire/template/views/static/customize.html +95 -0
  203. data/lib/ecrire/version.rb +3 -0
  204. data/lib/ecrire.rb +24 -0
  205. data/test/editor/controllers/admin/images_controller_test.rb +6 -0
  206. data/test/editor/controllers/admin/posts_controller_test.rb +90 -0
  207. data/test/editor/controllers/base_controller_test.rb +26 -0
  208. data/test/editor/controllers/images_controller_test.rb +2 -0
  209. data/test/editor/controllers/partials_controller_test.rb +2 -0
  210. data/test/editor/controllers/posts_controller_test.rb +21 -0
  211. data/test/editor/controllers/sessions_controller_test.rb +21 -0
  212. data/test/editor/helpers/base_helper_test.rb +19 -0
  213. data/test/editor/helpers/posts_helper_test.rb +3 -0
  214. data/test/editor/models/image_test.rb +33 -0
  215. data/test/editor/models/partial_test.rb +4 -0
  216. data/test/editor/models/post_test.rb +109 -0
  217. data/test/editor/models/user_test.rb +4 -0
  218. data/test/editor/test_helper.rb +28 -0
  219. data/test/fixtures/images.yml +11 -0
  220. data/test/fixtures/partials.yml +9 -0
  221. data/test/fixtures/posts.yml +16 -0
  222. data/test/fixtures/users.yml +9 -0
  223. data/test/initializations/railtie_test.rb +49 -0
  224. data/test/isolation.rb +16 -0
  225. data/test/themes/template/Gemfile +28 -0
  226. data/test/themes/template/assets/javascripts/blog.js.coffee +0 -0
  227. data/test/themes/template/assets/javascripts/post.js.coffee +0 -0
  228. data/test/themes/template/assets/stylesheets/blog.css.scss +0 -0
  229. data/test/themes/template/assets/stylesheets/post.css.scss +0 -0
  230. data/test/themes/template/config.ru +0 -0
  231. data/test/themes/template/views/layouts/application.html.erb +1 -0
  232. data/test/themes/template/views/posts/index.html.erb +0 -0
  233. metadata +275 -0
@@ -0,0 +1,109 @@
1
+ require 'editor/test_helper'
2
+
3
+ class PostTest < ActiveSupport::TestCase
4
+ test "fetch published post" do
5
+ @posts = Post.status("published")
6
+ assert_equal @posts.count, Post.published.count
7
+ @posts.each do |post|
8
+ assert post.published?
9
+ end
10
+ end
11
+
12
+ test "fetch draft post" do
13
+ @posts = Post.status("draft")
14
+ assert_equal @posts.count, Post.drafted.count
15
+ @posts.each do |post|
16
+ assert post.draft?
17
+ end
18
+ end
19
+
20
+ test 'fetch post without a specific one' do
21
+ excluded_post = posts(:published)
22
+ Post.without(excluded_post).each do |post|
23
+ assert_not_equal post, excluded_post, "The excluded post shouldn't be part of the result"
24
+ end
25
+ end
26
+
27
+ test "publishing a post" do
28
+ @post = Post.new
29
+ @post.title = "Some new post"
30
+ assert @post.draft?, "Should be a draft"
31
+ @post.publish!
32
+ assert @post.published?, "Should be published"
33
+ end
34
+
35
+ test "publishing date shouldn't change once set" do
36
+ @post = posts(:published)
37
+ published_at = @post.published_at
38
+ @post.publish!
39
+ assert_equal published_at, @post.published_at, "Shouldn't be able to change the published date"
40
+ end
41
+
42
+ test "should create a slug if none exist" do
43
+ @post = Post.new
44
+ @post.title = "some test"
45
+ !@post.save
46
+ assert !@post.slug.nil?
47
+ end
48
+
49
+ test "can't save a post if the title already exists" do
50
+ @old_post = Post.first
51
+ @post = Post.new
52
+ @post.title = @old_post.title
53
+ assert !@post.save, "The post shouldn't save."
54
+ assert @post.errors.has_key?(:title), 'There should be an error with the title'
55
+ end
56
+
57
+ test "exerpt does not include images" do
58
+ post = Admin::Post.create!({
59
+ title: "A new post",
60
+ content: "Hello
61
+ ![a](http://google.com)"
62
+ })
63
+
64
+ html = Nokogiri::HTML(post.compiled_excerpt)
65
+
66
+ assert html.css('p').length > 0
67
+ assert_equal html.css('img').length, 0, "There shouldn't be image within excerpt"
68
+
69
+ end
70
+
71
+ test "can't save a post if the slug already exists" do
72
+ @old_post = Post.first
73
+ @post = Post.new
74
+ @post.slug = @old_post.slug
75
+ assert !@post.save, "The post shouldn't save."
76
+ assert @post.errors.has_key?(:slug), 'There should be an error with the slug'
77
+ end
78
+
79
+ test 'should be able to add labels' do
80
+ @post = posts(:draft)
81
+ label = Label.create(name: 'A label')
82
+ @post.labels = [label]
83
+ assert @post.save
84
+ end
85
+
86
+ test 'labels are arrays of Label' do
87
+ @post = posts(:draft)
88
+ label = Label.create(name: 'A label')
89
+ @post.labels = [label]
90
+ assert @post.save
91
+ assert_equal @post.labels.first, label
92
+ assert_kind_of Array, @post.labels
93
+ assert_kind_of Label, @post.labels.first
94
+ end
95
+
96
+ test 'labels are instance of Label' do
97
+ end
98
+
99
+ test 'only 1 image can be associated with a post' do
100
+ post = Admin::Post.create!(title: 'A post with some image')
101
+ assert_equal 1, Image.where('post_id = ?', post.id).count
102
+
103
+ post.content = '# Hello world'
104
+ post.save!
105
+
106
+ assert_equal 1, Image.where('post_id = ?', post.id).count
107
+ end
108
+
109
+ end
@@ -0,0 +1,4 @@
1
+ require 'editor/test_helper'
2
+
3
+ class UserTest < ActiveSupport::TestCase
4
+ end
@@ -0,0 +1,28 @@
1
+ require 'rails/all'
2
+ require 'ecrire'
3
+ require 'rails/test_help'
4
+
5
+ class ActiveSupport::TestCase
6
+ ActiveSupport.test_order = :sorted
7
+ self.fixture_path = "#{Dir.pwd}/test/fixtures"
8
+ fixtures :all
9
+
10
+ # Need to quick boot an instance of Ecrire to check if a user
11
+ # exists. It creates a new user if none exists so the editor can be launched
12
+ pid = fork do
13
+ Dir.chdir Dir.pwd + '/test/themes/template' do
14
+ Ecrire::Application.initialize!
15
+ ::User.first_or_create!(email: 'test@test.ca', password: 123456)
16
+ end
17
+ exit!
18
+ end
19
+
20
+ Process.wait2(pid)
21
+
22
+ Dir.chdir Dir.pwd + '/test/themes/template' do
23
+ Ecrire::Application.initialize!
24
+ end
25
+
26
+ include Warden::Test::Helpers
27
+
28
+ end
@@ -0,0 +1,11 @@
1
+ # Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/Fixtures.html
2
+
3
+ # This model initially had no columns defined. If you add columns to the
4
+ # model remove the '{}' from the fixture names and add the columns immediately
5
+ # below each fixture, per the syntax in the comments below
6
+ #
7
+ favorited:
8
+ favorite: true
9
+
10
+ standard:
11
+ favorite: false
@@ -0,0 +1,9 @@
1
+ # Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/Fixtures.html
2
+
3
+ # This model initially had no columns defined. If you add columns to the
4
+ # model remove the '{}' from the fixture names and add the columns immediately
5
+ # below each fixture, per the syntax in the comments below
6
+ #
7
+ # column: value
8
+ #
9
+ # column: value
@@ -0,0 +1,16 @@
1
+ # Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/Fixtures.html
2
+
3
+ # This model initially had no columns defined. If you add columns to the
4
+ # model remove the '{}' from the fixture names and add the columns immediately
5
+ # below each fixture, per the syntax in the comments below
6
+ #
7
+ published:
8
+ title: "Test"
9
+ slug: "test"
10
+ content: "Test"
11
+ published_at: <%= 2.days.ago %>
12
+
13
+ draft:
14
+ title: "A draft"
15
+ slug: "a-draft"
16
+ content: "A draft"
@@ -0,0 +1,9 @@
1
+ # Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/Fixtures.html
2
+
3
+ # This model initially had no columns defined. If you add columns to the
4
+ # model remove the '{}' from the fixture names and add the columns immediately
5
+ # below each fixture, per the syntax in the comments below
6
+ #
7
+ pothibo:
8
+ email: 'pothibo@gmail.com'
9
+ encrypted_password: <%= BCrypt::Password.create('123456789') %>
@@ -0,0 +1,49 @@
1
+ require "isolation"
2
+
3
+ class RailtieTest < ActiveSupport::TestCase
4
+ include ActiveSupport::Testing::Isolation
5
+
6
+ def teardown
7
+ Object.send(:remove_const, :Ecrire)
8
+ end
9
+
10
+ test 'Ecrire onboards by default' do
11
+ require 'ecrire'
12
+ Ecrire::Application.initialize!
13
+ assert Ecrire::Railtie.include?(Ecrire::Railtie::Onboarding)
14
+ assert !Ecrire::Railtie.include?(Ecrire::Railtie::Theme)
15
+ end
16
+
17
+ test 'not configured if no user is present in the database' do
18
+ Dir.chdir 'test/themes/template' do
19
+
20
+ require 'ecrire'
21
+ Ecrire::Application.initialize!
22
+
23
+ assert Ecrire::Railtie.include?(Ecrire::Railtie::Onboarding)
24
+ assert !Ecrire::Railtie.include?(Ecrire::Railtie::Theme)
25
+ end
26
+ end
27
+
28
+ test 'configured completely if a connection to the database can be made' do
29
+ Dir.chdir 'test/themes/template' do
30
+
31
+ run_in_isolation do
32
+ require 'ecrire'
33
+ Ecrire::Application.initialize!
34
+ ::User.first_or_create!(email: 'test@test.ca', password: 123456)
35
+ end
36
+
37
+ require 'ecrire'
38
+ Ecrire::Application.initialize!
39
+
40
+ assert !Ecrire::Railtie.include?(Ecrire::Railtie::Onboarding)
41
+ assert Ecrire::Railtie.include?(Ecrire::Railtie::Theme)
42
+ # Need to destroy the user here because parallelization is fubar'ed
43
+ # and it's the most stable way I found it.
44
+ # All other options seemed to introduce racing conditions.
45
+ User.destroy_all
46
+ end
47
+ end
48
+
49
+ end
data/test/isolation.rb ADDED
@@ -0,0 +1,16 @@
1
+ # This is required in order to test railties. This is based on isolation
2
+ # in rails that is available here
3
+ # https://github.com/rails/rails/blob/master/railties/test/isolation/abstract_unit.rb
4
+ require 'fileutils'
5
+ require 'active_support'
6
+
7
+ require 'active_support/testing/autorun'
8
+ require 'active_support/test_case'
9
+
10
+ # These files do not require any others and are needed
11
+ # to run the tests
12
+ require "active_support/testing/isolation"
13
+ require "active_support/core_ext/kernel/reporting"
14
+ require 'tmpdir'
15
+
16
+ ActiveSupport.test_order = :sorted
@@ -0,0 +1,28 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gem 'ecrire', '~> 0.6'
4
+ gem 'actionview', '~> 4.1'
5
+ gem 'activemodel', '~> 4.1'
6
+ gem 'actionmailer', '~> 4.1'
7
+
8
+ gem 'warden', '~> 1.2'
9
+ gem 'bcrypt', '~> 3.1'
10
+ gem 'nokogiri', '~> 1.6'
11
+ gem 's3', '~> 0.3'
12
+ gem 'pg', '~> 0.17'
13
+ gem 'kaminari', '~> 0.15'
14
+
15
+ group :server do
16
+ gem 'thin', '~> 1.6'
17
+ end
18
+
19
+ group :assets do
20
+ gem 'therubyracer'
21
+ gem 'sass-rails', '~> 4.0.3'
22
+ gem 'sprockets-rails', '~> 2.1'
23
+ gem 'bourbon', '~> 3.2'
24
+ gem 'coffee-rails', '~> 4.0'
25
+ gem 'jquery-rails', '~> 3.1'
26
+ gem 'turbolinks', '~> 2.2'
27
+ gem 'uglifier', '~> 2.5'
28
+ end
File without changes
@@ -0,0 +1 @@
1
+ <%= yield %>
File without changes
metadata ADDED
@@ -0,0 +1,275 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: ecrire
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.20.0
5
+ platform: ruby
6
+ authors:
7
+ - Pier-Olivier Thibault
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-02-18 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: Blog engine on Rails
14
+ email: pothibo@gmail.com
15
+ executables:
16
+ - ecrire
17
+ extensions: []
18
+ extra_rdoc_files: []
19
+ files:
20
+ - ".gitignore"
21
+ - Gemfile
22
+ - LICENCE
23
+ - README.md
24
+ - Rakefile
25
+ - bin/ecrire
26
+ - ecrire.gemspec
27
+ - lib/ecrire.rb
28
+ - lib/ecrire/app/assets/javascripts/admin.js
29
+ - lib/ecrire/app/assets/javascripts/admin/editor/content.coffee
30
+ - lib/ecrire/app/assets/javascripts/admin/editor/ext.coffee
31
+ - lib/ecrire/app/assets/javascripts/admin/editor/extensions/clipboard.coffee
32
+ - lib/ecrire/app/assets/javascripts/admin/editor/extensions/image.coffee
33
+ - lib/ecrire/app/assets/javascripts/admin/editor/navigation/delete.js.coffee
34
+ - lib/ecrire/app/assets/javascripts/admin/editor/navigation/draft.js.coffee
35
+ - lib/ecrire/app/assets/javascripts/admin/editor/navigation/help.js.coffee
36
+ - lib/ecrire/app/assets/javascripts/admin/editor/navigation/save.js.coffee
37
+ - lib/ecrire/app/assets/javascripts/admin/editor/navigation/sticky.js.coffee
38
+ - lib/ecrire/app/assets/javascripts/admin/editor/navigation/toggle.js.coffee
39
+ - lib/ecrire/app/assets/javascripts/admin/editor/parsers/code.coffee
40
+ - lib/ecrire/app/assets/javascripts/admin/editor/parsers/heading.coffee
41
+ - lib/ecrire/app/assets/javascripts/admin/editor/parsers/image.coffee
42
+ - lib/ecrire/app/assets/javascripts/admin/editor/parsers/link.coffee
43
+ - lib/ecrire/app/assets/javascripts/admin/editor/parsers/lists.coffee
44
+ - lib/ecrire/app/assets/javascripts/admin/editor/parsers/word.coffee
45
+ - lib/ecrire/app/assets/javascripts/admin/posts/header.coffee
46
+ - lib/ecrire/app/assets/javascripts/admin/posts/new.js.coffee
47
+ - lib/ecrire/app/assets/javascripts/admin/posts/title.coffee
48
+ - lib/ecrire/app/assets/javascripts/application.js
49
+ - lib/ecrire/app/assets/javascripts/shared/overlay.js.coffee
50
+ - lib/ecrire/app/assets/javascripts/shared/popup.js.coffee
51
+ - lib/ecrire/app/assets/javascripts/vendor/moment.js
52
+ - lib/ecrire/app/assets/javascripts/vendor/prism.js
53
+ - lib/ecrire/app/assets/javascripts/vendor/prism/prism.ruby.js
54
+ - lib/ecrire/app/assets/stylesheets/admin.css.scss
55
+ - lib/ecrire/app/assets/stylesheets/admin/base.css.scss
56
+ - lib/ecrire/app/assets/stylesheets/admin/documentation.css.scss
57
+ - lib/ecrire/app/assets/stylesheets/admin/editor/base.css.scss
58
+ - lib/ecrire/app/assets/stylesheets/admin/editor/content.css.scss
59
+ - lib/ecrire/app/assets/stylesheets/admin/editor/header.css.scss
60
+ - lib/ecrire/app/assets/stylesheets/admin/editor/image.css.scss
61
+ - lib/ecrire/app/assets/stylesheets/admin/editor/publish.css.scss
62
+ - lib/ecrire/app/assets/stylesheets/admin/editor/save.css.scss
63
+ - lib/ecrire/app/assets/stylesheets/admin/images.css.scss
64
+ - lib/ecrire/app/assets/stylesheets/admin/loading.css.scss
65
+ - lib/ecrire/app/assets/stylesheets/admin/mixins/animations.css.scss
66
+ - lib/ecrire/app/assets/stylesheets/admin/mixins/form.css.scss
67
+ - lib/ecrire/app/assets/stylesheets/admin/navigation.css.scss
68
+ - lib/ecrire/app/assets/stylesheets/admin/posts.css.scss
69
+ - lib/ecrire/app/assets/stylesheets/admin/variables.css.scss
70
+ - lib/ecrire/app/assets/stylesheets/application.css.scss
71
+ - lib/ecrire/app/assets/stylesheets/sessions.css.scss
72
+ - lib/ecrire/app/assets/stylesheets/shared/main.css.scss
73
+ - lib/ecrire/app/assets/stylesheets/shared/popup.css.scss
74
+ - lib/ecrire/app/assets/stylesheets/vendor/prism.scss
75
+ - lib/ecrire/app/assets/stylesheets/vendor/prism/ruby.scss
76
+ - lib/ecrire/app/controllers/admin/application_controller.rb
77
+ - lib/ecrire/app/controllers/admin/configurations/images_controller.rb
78
+ - lib/ecrire/app/controllers/admin/images_controller.rb
79
+ - lib/ecrire/app/controllers/admin/labels_controller.rb
80
+ - lib/ecrire/app/controllers/admin/partials_controller.rb
81
+ - lib/ecrire/app/controllers/admin/posts_controller.rb
82
+ - lib/ecrire/app/controllers/admin/properties_controller.rb
83
+ - lib/ecrire/app/controllers/application_controller.rb
84
+ - lib/ecrire/app/controllers/concerns/.keep
85
+ - lib/ecrire/app/controllers/ecrire/posts_controller.rb
86
+ - lib/ecrire/app/controllers/images_controller.rb
87
+ - lib/ecrire/app/controllers/onboarding/databases_controller.rb
88
+ - lib/ecrire/app/controllers/onboarding/users_controller.rb
89
+ - lib/ecrire/app/controllers/onboarding_controller.rb
90
+ - lib/ecrire/app/controllers/partials_controller.rb
91
+ - lib/ecrire/app/controllers/sessions_controller.rb
92
+ - lib/ecrire/app/controllers/static_controller.rb
93
+ - lib/ecrire/app/forms/admin/image_builder.rb
94
+ - lib/ecrire/app/forms/admin/partial_builder.rb
95
+ - lib/ecrire/app/forms/admin/post_builder.rb
96
+ - lib/ecrire/app/helpers/admin/images_helper.rb
97
+ - lib/ecrire/app/helpers/admin/labels_helper.rb
98
+ - lib/ecrire/app/helpers/admin/posts_helper.rb
99
+ - lib/ecrire/app/helpers/application_helper.rb
100
+ - lib/ecrire/app/helpers/content_tag_helper.rb
101
+ - lib/ecrire/app/helpers/open_graph_helper.rb
102
+ - lib/ecrire/app/helpers/posts_helper.rb
103
+ - lib/ecrire/app/models/admin/image.rb
104
+ - lib/ecrire/app/models/admin/partial.rb
105
+ - lib/ecrire/app/models/admin/post.rb
106
+ - lib/ecrire/app/models/concerns/.keep
107
+ - lib/ecrire/app/models/image.rb
108
+ - lib/ecrire/app/models/label.rb
109
+ - lib/ecrire/app/models/partial.rb
110
+ - lib/ecrire/app/models/post.rb
111
+ - lib/ecrire/app/models/property/image.rb
112
+ - lib/ecrire/app/models/property/label.rb
113
+ - lib/ecrire/app/models/user.rb
114
+ - lib/ecrire/app/strategies/password_strategy.rb
115
+ - lib/ecrire/app/views/admin/configurations/images/complete.html.erb
116
+ - lib/ecrire/app/views/admin/configurations/images/show.html.erb
117
+ - lib/ecrire/app/views/admin/images/_errors.html.erb
118
+ - lib/ecrire/app/views/admin/images/_form.html.erb
119
+ - lib/ecrire/app/views/admin/images/destroy.js.erb
120
+ - lib/ecrire/app/views/admin/images/errors.js.erb
121
+ - lib/ecrire/app/views/admin/images/update.js.erb
122
+ - lib/ecrire/app/views/admin/posts/_documentation.html.erb
123
+ - lib/ecrire/app/views/admin/posts/_list.html.erb
124
+ - lib/ecrire/app/views/admin/posts/_post.html.erb
125
+ - lib/ecrire/app/views/admin/posts/edit.html.erb
126
+ - lib/ecrire/app/views/admin/posts/help.js.erb
127
+ - lib/ecrire/app/views/admin/posts/index.js.erb
128
+ - lib/ecrire/app/views/admin/posts/title.html.erb
129
+ - lib/ecrire/app/views/admin/posts/update/content.js.erb
130
+ - lib/ecrire/app/views/admin/posts/update/title.js.erb
131
+ - lib/ecrire/app/views/admin/properties/image/create.js.erb
132
+ - lib/ecrire/app/views/admin/properties/image/destroy.js.erb
133
+ - lib/ecrire/app/views/admin/properties/label/create.js.erb
134
+ - lib/ecrire/app/views/admin/properties/label/destroy.js.erb
135
+ - lib/ecrire/app/views/layouts/admin/application.html.erb
136
+ - lib/ecrire/app/views/partials/show.html.erb
137
+ - lib/ecrire/app/views/sessions/_form.html.erb
138
+ - lib/ecrire/app/views/sessions/_navigation.html.erb
139
+ - lib/ecrire/app/views/sessions/new.html.erb
140
+ - lib/ecrire/application.rb
141
+ - lib/ecrire/commands.rb
142
+ - lib/ecrire/commands/base.rb
143
+ - lib/ecrire/commands/console.rb
144
+ - lib/ecrire/commands/new.rb
145
+ - lib/ecrire/commands/server.rb
146
+ - lib/ecrire/config/environment.rb
147
+ - lib/ecrire/config/environment/development.rb
148
+ - lib/ecrire/config/environment/production.rb
149
+ - lib/ecrire/config/environment/test.rb
150
+ - lib/ecrire/config/onboarding_routes.rb
151
+ - lib/ecrire/config/routes.rb
152
+ - lib/ecrire/db/migrate/20131111222709_create_posts.rb
153
+ - lib/ecrire/db/migrate/20131113200949_create_users.rb
154
+ - lib/ecrire/db/migrate/20131114205041_add_excerpt_to_post.rb
155
+ - lib/ecrire/db/migrate/20131221181640_add_javascript_to_posts.rb
156
+ - lib/ecrire/db/migrate/20131221195338_create_partials.rb
157
+ - lib/ecrire/db/migrate/20140115215122_create_images.rb
158
+ - lib/ecrire/db/migrate/20140209144412_add_favorite_flag_to_image.rb
159
+ - lib/ecrire/db/migrate/20140617224837_create_labels.rb
160
+ - lib/ecrire/db/migrate/20140618321984_add_properties_to_posts.rb
161
+ - lib/ecrire/db/migrate/20150113839713_convert_markdown_in_post_content.rb
162
+ - lib/ecrire/db/migrate/20150120093481_add_preview_to_posts.rb
163
+ - lib/ecrire/db/schema.rb
164
+ - lib/ecrire/locales/admin/configurations/images/en.yml
165
+ - lib/ecrire/locales/admin/en.yml
166
+ - lib/ecrire/locales/admin/images/en.yml
167
+ - lib/ecrire/locales/admin/partials/en.yml
168
+ - lib/ecrire/locales/admin/posts/en.yml
169
+ - lib/ecrire/locales/en.yml
170
+ - lib/ecrire/onboarding/assets/images/.keep
171
+ - lib/ecrire/onboarding/assets/images/background.png
172
+ - lib/ecrire/onboarding/assets/images/github-logo.png
173
+ - lib/ecrire/onboarding/assets/images/profile.png
174
+ - lib/ecrire/onboarding/assets/images/twitter-logo.png
175
+ - lib/ecrire/onboarding/assets/javascripts/base.js
176
+ - lib/ecrire/onboarding/assets/javascripts/databases/information.js.coffee
177
+ - lib/ecrire/onboarding/assets/javascripts/message.js.coffee
178
+ - lib/ecrire/onboarding/assets/stylesheets/base.css.scss
179
+ - lib/ecrire/onboarding/assets/stylesheets/complete.css.scss
180
+ - lib/ecrire/onboarding/assets/stylesheets/fonts.css.scss
181
+ - lib/ecrire/onboarding/assets/stylesheets/form.css.scss
182
+ - lib/ecrire/onboarding/assets/stylesheets/message.css.scss
183
+ - lib/ecrire/onboarding/assets/stylesheets/terminal.css.scss
184
+ - lib/ecrire/onboarding/assets/stylesheets/variables.css.scss
185
+ - lib/ecrire/onboarding/assets/stylesheets/welcome.css.scss
186
+ - lib/ecrire/onboarding/views/layouts/application.html.erb
187
+ - lib/ecrire/onboarding/views/onboarding/complete.html.erb
188
+ - lib/ecrire/onboarding/views/onboarding/databases/index.html.erb
189
+ - lib/ecrire/onboarding/views/onboarding/users/index.html.erb
190
+ - lib/ecrire/onboarding/views/onboarding/welcome.html.erb
191
+ - lib/ecrire/railtie.rb
192
+ - lib/ecrire/railtie/onboarding.rb
193
+ - lib/ecrire/railtie/theme.rb
194
+ - lib/ecrire/tasks/assets.rake
195
+ - lib/ecrire/tasks/routes.rake
196
+ - lib/ecrire/template/Gemfile
197
+ - lib/ecrire/template/Rakefile
198
+ - lib/ecrire/template/assets/images/.keep
199
+ - lib/ecrire/template/assets/javascripts/base.js.coffee
200
+ - lib/ecrire/template/assets/javascripts/post.js.coffee
201
+ - lib/ecrire/template/assets/stylesheets/base.css.scss
202
+ - lib/ecrire/template/assets/stylesheets/code.css.scss
203
+ - lib/ecrire/template/assets/stylesheets/footer.css.scss
204
+ - lib/ecrire/template/assets/stylesheets/header.css.scss
205
+ - lib/ecrire/template/assets/stylesheets/home.css.scss
206
+ - lib/ecrire/template/config.ru
207
+ - lib/ecrire/template/controllers/posts_controller.rb
208
+ - lib/ecrire/template/helpers/blog_helper.rb
209
+ - lib/ecrire/template/views/layouts/application.html.erb
210
+ - lib/ecrire/template/views/posts/_post.html.erb
211
+ - lib/ecrire/template/views/posts/index.html.erb
212
+ - lib/ecrire/template/views/posts/show.html.erb
213
+ - lib/ecrire/template/views/static/about.html
214
+ - lib/ecrire/template/views/static/customize.html
215
+ - lib/ecrire/template/views/static/customize/_helper.html
216
+ - lib/ecrire/template/views/static/customize/_helper_used.html
217
+ - lib/ecrire/template/views/static/customize/_image.html
218
+ - lib/ecrire/template/views/static/customize/_index.html
219
+ - lib/ecrire/template/views/static/customize/_javascript.html
220
+ - lib/ecrire/template/views/static/customize/_layout.html.erb
221
+ - lib/ecrire/template/views/static/customize/_post.html
222
+ - lib/ecrire/version.rb
223
+ - test/editor/controllers/admin/images_controller_test.rb
224
+ - test/editor/controllers/admin/posts_controller_test.rb
225
+ - test/editor/controllers/base_controller_test.rb
226
+ - test/editor/controllers/images_controller_test.rb
227
+ - test/editor/controllers/partials_controller_test.rb
228
+ - test/editor/controllers/posts_controller_test.rb
229
+ - test/editor/controllers/sessions_controller_test.rb
230
+ - test/editor/helpers/base_helper_test.rb
231
+ - test/editor/helpers/posts_helper_test.rb
232
+ - test/editor/models/image_test.rb
233
+ - test/editor/models/partial_test.rb
234
+ - test/editor/models/post_test.rb
235
+ - test/editor/models/user_test.rb
236
+ - test/editor/test_helper.rb
237
+ - test/fixtures/images.yml
238
+ - test/fixtures/partials.yml
239
+ - test/fixtures/posts.yml
240
+ - test/fixtures/users.yml
241
+ - test/initializations/railtie_test.rb
242
+ - test/isolation.rb
243
+ - test/themes/template/Gemfile
244
+ - test/themes/template/assets/javascripts/blog.js.coffee
245
+ - test/themes/template/assets/javascripts/post.js.coffee
246
+ - test/themes/template/assets/stylesheets/blog.css.scss
247
+ - test/themes/template/assets/stylesheets/post.css.scss
248
+ - test/themes/template/config.ru
249
+ - test/themes/template/views/layouts/application.html.erb
250
+ - test/themes/template/views/posts/index.html.erb
251
+ homepage: http://pothibo.com
252
+ licenses:
253
+ - MIT
254
+ metadata: {}
255
+ post_install_message:
256
+ rdoc_options: []
257
+ require_paths:
258
+ - lib
259
+ required_ruby_version: !ruby/object:Gem::Requirement
260
+ requirements:
261
+ - - ">="
262
+ - !ruby/object:Gem::Version
263
+ version: 2.0.0
264
+ required_rubygems_version: !ruby/object:Gem::Requirement
265
+ requirements:
266
+ - - ">="
267
+ - !ruby/object:Gem::Version
268
+ version: '0'
269
+ requirements: []
270
+ rubyforge_project:
271
+ rubygems_version: 2.0.14
272
+ signing_key:
273
+ specification_version: 4
274
+ summary: Blog engine
275
+ test_files: []