almanac 0.4.4

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 (127) hide show
  1. data/MIT-LICENSE +20 -0
  2. data/README.md +76 -0
  3. data/Rakefile +40 -0
  4. data/app/assets/images/almanac/background.jpg +0 -0
  5. data/app/assets/images/almanac/icons/compose.png +0 -0
  6. data/app/assets/images/almanac/icons/feed.png +0 -0
  7. data/app/assets/images/almanac/icons/gear.png +0 -0
  8. data/app/assets/images/almanac/icons/glyphicons-halflings-white.png +0 -0
  9. data/app/assets/images/almanac/icons/glyphicons-halflings.png +0 -0
  10. data/app/assets/images/almanac/icons/upload.png +0 -0
  11. data/app/assets/images/almanac/logo.jpg +0 -0
  12. data/app/assets/javascripts/almanac/2-jquery.backstretch.js +357 -0
  13. data/app/assets/javascripts/almanac/3-pixastic.js +637 -0
  14. data/app/assets/javascripts/almanac/4-bootstrap-datepicker.js +454 -0
  15. data/app/assets/javascripts/almanac/5-main.coffee.erb +46 -0
  16. data/app/assets/javascripts/almanac/application.js +16 -0
  17. data/app/assets/stylesheets/almanac/1-datepicker.css +7 -0
  18. data/app/assets/stylesheets/almanac/2-main.css.scss +279 -0
  19. data/app/assets/stylesheets/almanac/application.css +15 -0
  20. data/app/controllers/almanac/application_controller.rb +24 -0
  21. data/app/controllers/almanac/blogs_controller.rb +64 -0
  22. data/app/controllers/almanac/comments_controller.rb +41 -0
  23. data/app/controllers/almanac/images_controller.rb +29 -0
  24. data/app/controllers/almanac/posts_controller.rb +109 -0
  25. data/app/helpers/almanac/application_helper.rb +4 -0
  26. data/app/models/almanac/blog.rb +32 -0
  27. data/app/models/almanac/comment.rb +20 -0
  28. data/app/models/almanac/image.rb +10 -0
  29. data/app/models/almanac/post.rb +55 -0
  30. data/app/views/almanac/blogs/_form.html.haml +76 -0
  31. data/app/views/almanac/blogs/_topbar.html.haml +5 -0
  32. data/app/views/almanac/blogs/edit.html.haml +4 -0
  33. data/app/views/almanac/blogs/new.html.haml +3 -0
  34. data/app/views/almanac/blogs/spam.html.haml +15 -0
  35. data/app/views/almanac/posts/_form.html.haml +52 -0
  36. data/app/views/almanac/posts/_post.html.haml +59 -0
  37. data/app/views/almanac/posts/edit.html.haml +1 -0
  38. data/app/views/almanac/posts/index.html.haml +30 -0
  39. data/app/views/almanac/posts/index.rss.builder +18 -0
  40. data/app/views/almanac/posts/new.html.haml +1 -0
  41. data/app/views/almanac/posts/show.html.haml +4 -0
  42. data/app/views/almanac/posts/tag.html.haml +22 -0
  43. data/app/views/layouts/almanac/_ga.html.haml +10 -0
  44. data/app/views/layouts/almanac/_twitter_follow.html.haml +2 -0
  45. data/app/views/layouts/almanac/application.html.haml +52 -0
  46. data/config/routes.rb +22 -0
  47. data/db/migrate/20121009222451_create_almanac_posts.rb +17 -0
  48. data/db/migrate/20121010033555_create_almanac_blogs.rb +14 -0
  49. data/db/migrate/20121017032059_add_excerpt_to_almanac_posts.rb +11 -0
  50. data/db/migrate/20121017210007_create_almanac_files.rb +15 -0
  51. data/db/migrate/20121017221819_rename_file_to_image.rb +9 -0
  52. data/db/migrate/20121025223403_add_image_fields_to_almanac_blogs.rb +13 -0
  53. data/db/migrate/20121029211221_add_new_fields_to_blogs.rb +15 -0
  54. data/db/migrate/20121029221815_acts_as_taggable_on_migration.rb +30 -0
  55. data/db/migrate/20121101030836_create_almanac_comments.rb +16 -0
  56. data/db/migrate/20121102181941_add_rakismet_fields_to_blogs.rb +13 -0
  57. data/db/migrate/20121102185130_add_spam_to_comments.rb +11 -0
  58. data/db/migrate/20121110000024_add_written_at_to_posts.rb +11 -0
  59. data/db/migrate/20121112205256_add_background_fields_to_blogs.rb +13 -0
  60. data/db/migrate/20121113010557_add_footer_to_almanac_blogs.rb +11 -0
  61. data/db/migrate/20121114043648_change_default_value_for_background_tiles_in_almanac_blogs.rb +9 -0
  62. data/lib/almanac.rb +16 -0
  63. data/lib/almanac/MarkdownParser.rb +18 -0
  64. data/lib/almanac/engine.rb +9 -0
  65. data/lib/almanac/version.rb +3 -0
  66. data/lib/tasks/almanac_tasks.rake +4 -0
  67. data/spec/controllers/blogs_controller_spec.rb +80 -0
  68. data/spec/controllers/comments_controller_spec.rb +51 -0
  69. data/spec/controllers/posts_controller_spec.rb +120 -0
  70. data/spec/dummy/README.rdoc +261 -0
  71. data/spec/dummy/Rakefile +7 -0
  72. data/spec/dummy/app/assets/javascripts/application.js +15 -0
  73. data/spec/dummy/app/assets/stylesheets/application.css +13 -0
  74. data/spec/dummy/app/controllers/application_controller.rb +3 -0
  75. data/spec/dummy/app/helpers/application_helper.rb +2 -0
  76. data/spec/dummy/app/models/ability.rb +13 -0
  77. data/spec/dummy/app/models/user.rb +11 -0
  78. data/spec/dummy/app/views/layouts/application.html.erb +14 -0
  79. data/spec/dummy/config.ru +4 -0
  80. data/spec/dummy/config/application.rb +59 -0
  81. data/spec/dummy/config/boot.rb +10 -0
  82. data/spec/dummy/config/database.yml +25 -0
  83. data/spec/dummy/config/environment.rb +5 -0
  84. data/spec/dummy/config/environments/development.rb +37 -0
  85. data/spec/dummy/config/environments/production.rb +67 -0
  86. data/spec/dummy/config/environments/test.rb +37 -0
  87. data/spec/dummy/config/initializers/almanac.rb +1 -0
  88. data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
  89. data/spec/dummy/config/initializers/devise.rb +233 -0
  90. data/spec/dummy/config/initializers/dragonfly.rb +7 -0
  91. data/spec/dummy/config/initializers/inflections.rb +15 -0
  92. data/spec/dummy/config/initializers/mime_types.rb +5 -0
  93. data/spec/dummy/config/initializers/secret_token.rb +7 -0
  94. data/spec/dummy/config/initializers/session_store.rb +8 -0
  95. data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
  96. data/spec/dummy/config/locales/en.yml +5 -0
  97. data/spec/dummy/config/routes.rb +14 -0
  98. data/spec/dummy/db/migrate/20121009230705_create_almanac_posts.rb +18 -0
  99. data/spec/dummy/db/migrate/20121010033827_create_almanac_blogs.rb +15 -0
  100. data/spec/dummy/db/migrate/20121102224650_add_excerpt_to_almanac_posts.rb +12 -0
  101. data/spec/dummy/db/migrate/20121102224651_create_almanac_files..rb +16 -0
  102. data/spec/dummy/db/migrate/20121102224652_rename_file_to_image.rb +10 -0
  103. data/spec/dummy/db/migrate/20121102224653_add_image_fields_to_almanac_blogs.rb +14 -0
  104. data/spec/dummy/db/migrate/20121102224654_add_new_fields_to_almanac_blogs.rb +16 -0
  105. data/spec/dummy/db/migrate/20121102224655_acts_as_taggable_on_migration.rb +31 -0
  106. data/spec/dummy/db/migrate/20121102224656_create_almanac_comments.rb +17 -0
  107. data/spec/dummy/db/migrate/20121102224657_add_rakismet_fields_to_almanac_blogs.rb +14 -0
  108. data/spec/dummy/db/migrate/20121102224658_add_spam_to_almanac_comments.rb +12 -0
  109. data/spec/dummy/db/migrate/20121106220325_devise_create_users.rb +46 -0
  110. data/spec/dummy/db/migrate/20121114032144_add_written_at_to_almanac_posts.rb +12 -0
  111. data/spec/dummy/db/migrate/20121114032145_add_background_fields_to_almanac_blogs.rb +14 -0
  112. data/spec/dummy/db/migrate/20121114032146_add_footer_to_almanac_blogs.rb +12 -0
  113. data/spec/dummy/db/schema.rb +98 -0
  114. data/spec/dummy/db/test.sqlite3 +0 -0
  115. data/spec/dummy/log/production.log +1 -0
  116. data/spec/dummy/log/test.log +2930 -0
  117. data/spec/dummy/public/404.html +26 -0
  118. data/spec/dummy/public/422.html +26 -0
  119. data/spec/dummy/public/500.html +25 -0
  120. data/spec/dummy/public/favicon.ico +0 -0
  121. data/spec/dummy/script/rails +6 -0
  122. data/spec/factories.rb +72 -0
  123. data/spec/models/blog_spec.rb +16 -0
  124. data/spec/models/comment_spec.rb +35 -0
  125. data/spec/models/post_spec.rb +79 -0
  126. data/spec/spec_helper.rb +37 -0
  127. metadata +485 -0
@@ -0,0 +1,26 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>The page you were looking for doesn't exist (404)</title>
5
+ <style type="text/css">
6
+ body { background-color: #fff; color: #666; text-align: center; font-family: arial, sans-serif; }
7
+ div.dialog {
8
+ width: 25em;
9
+ padding: 0 4em;
10
+ margin: 4em auto 0 auto;
11
+ border: 1px solid #ccc;
12
+ border-right-color: #999;
13
+ border-bottom-color: #999;
14
+ }
15
+ h1 { font-size: 100%; color: #f00; line-height: 1.5em; }
16
+ </style>
17
+ </head>
18
+
19
+ <body>
20
+ <!-- This file lives in public/404.html -->
21
+ <div class="dialog">
22
+ <h1>The page you were looking for doesn't exist.</h1>
23
+ <p>You may have mistyped the address or the page may have moved.</p>
24
+ </div>
25
+ </body>
26
+ </html>
@@ -0,0 +1,26 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>The change you wanted was rejected (422)</title>
5
+ <style type="text/css">
6
+ body { background-color: #fff; color: #666; text-align: center; font-family: arial, sans-serif; }
7
+ div.dialog {
8
+ width: 25em;
9
+ padding: 0 4em;
10
+ margin: 4em auto 0 auto;
11
+ border: 1px solid #ccc;
12
+ border-right-color: #999;
13
+ border-bottom-color: #999;
14
+ }
15
+ h1 { font-size: 100%; color: #f00; line-height: 1.5em; }
16
+ </style>
17
+ </head>
18
+
19
+ <body>
20
+ <!-- This file lives in public/422.html -->
21
+ <div class="dialog">
22
+ <h1>The change you wanted was rejected.</h1>
23
+ <p>Maybe you tried to change something you didn't have access to.</p>
24
+ </div>
25
+ </body>
26
+ </html>
@@ -0,0 +1,25 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>We're sorry, but something went wrong (500)</title>
5
+ <style type="text/css">
6
+ body { background-color: #fff; color: #666; text-align: center; font-family: arial, sans-serif; }
7
+ div.dialog {
8
+ width: 25em;
9
+ padding: 0 4em;
10
+ margin: 4em auto 0 auto;
11
+ border: 1px solid #ccc;
12
+ border-right-color: #999;
13
+ border-bottom-color: #999;
14
+ }
15
+ h1 { font-size: 100%; color: #f00; line-height: 1.5em; }
16
+ </style>
17
+ </head>
18
+
19
+ <body>
20
+ <!-- This file lives in public/500.html -->
21
+ <div class="dialog">
22
+ <h1>We're sorry, but something went wrong.</h1>
23
+ </div>
24
+ </body>
25
+ </html>
File without changes
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env ruby
2
+ # This command will automatically be run when you run "rails" with Rails 3 gems installed from the root of your application.
3
+
4
+ APP_PATH = File.expand_path('../../config/application', __FILE__)
5
+ require File.expand_path('../../config/boot', __FILE__)
6
+ require 'rails/commands'
@@ -0,0 +1,72 @@
1
+ FactoryGirl.define do
2
+ sequence(:tag_list) {|n| "common,test#{n},rspec#{n},ruby#{n},#rails#{n}" }
3
+ sequence(:author_id)
4
+
5
+ factory :user, :class => User do
6
+ email { Faker::Internet.safe_email }
7
+ password { Faker::Lorem.characters(10) }
8
+ end
9
+
10
+ factory :post, :class => Almanac::Post do
11
+ title { Faker::Lorem.sentence(3) }
12
+ excerpt { Faker::Lorem.sentence(1) }
13
+ body { Faker::Lorem.paragraph(5) }
14
+ published true
15
+ tag_list { generate(:tag_list) }
16
+ author_id { generate(:author_id) }
17
+ written_at { Date.today }
18
+
19
+ factory :post_with_comments do
20
+ ignore do
21
+ comments_count 15
22
+ end
23
+
24
+ after(:create) do |post, evaluator|
25
+ create_list(:comment, evaluator.comments_count, post: post)
26
+ end
27
+ end
28
+
29
+ factory :post_draft do
30
+ published false
31
+ end
32
+
33
+ association :blog, factory: :blog
34
+ end
35
+
36
+ factory :comment, :class => Almanac::Comment do
37
+ author_name { Faker::Name.name }
38
+ author_email { Faker::Internet.safe_email }
39
+ body { Faker::Lorem.paragraph(1) }
40
+ association :post, factory: :post
41
+
42
+ factory :spam_comment do
43
+ spam true
44
+ end
45
+ end
46
+
47
+ factory :blog, :class => Almanac::Blog do
48
+ title { Faker::Lorem.sentence(2) }
49
+ description { Faker::Lorem.paragraph(3) }
50
+ author_id { generate(:author_id) }
51
+
52
+ factory :blog_with_posts do
53
+ ignore do
54
+ posts_count 15
55
+ end
56
+
57
+ after(:create) do |blog, evaluator|
58
+ create_list(:post, evaluator.posts_count, blog: blog)
59
+ end
60
+ end
61
+
62
+ factory :blog_with_posts_with_comments do
63
+ ignore do
64
+ posts_count 15
65
+ end
66
+
67
+ after(:create) do |blog, evaluator|
68
+ create_list(:post_with_comments, evaluator.posts_count, blog: blog)
69
+ end
70
+ end
71
+ end
72
+ end
@@ -0,0 +1,16 @@
1
+ require 'spec_helper'
2
+
3
+ describe Almanac::Blog do
4
+ it "should be possible to create a valid blog" do
5
+ expect(create(:blog)).to eq(Almanac::Blog.first)
6
+ end
7
+
8
+ it "should not be possible to create a blog without a title" do
9
+ build(:blog, title: "").should_not be_valid
10
+ end
11
+
12
+ it "should not be possible to create more than one blog" do
13
+ create(:blog)
14
+ expect { create(:blog) }.to raise_error
15
+ end
16
+ end
@@ -0,0 +1,35 @@
1
+ require 'spec_helper'
2
+
3
+ describe Almanac::Comment do
4
+ it "should be possible to create a valid comment" do
5
+ create(:comment)
6
+
7
+ expect(Almanac::Comment.all.count).to eq(1)
8
+ end
9
+
10
+ it "should not be possible to create a comment without an author_name" do
11
+ build(:comment, author_name: "").should_not be_valid
12
+ end
13
+
14
+ it "should not be possible to create a comment without an author_email" do
15
+ build(:comment, author_email: "").should_not be_valid
16
+ end
17
+
18
+ it "should not be possible to create a comment without an body" do
19
+ build(:comment, body: "").should_not be_valid
20
+ end
21
+
22
+ it "should not be possible to create a comment without a post" do
23
+ build(:comment, post: nil).should_not be_valid
24
+ end
25
+
26
+ describe ".spam" do
27
+ it "should return spam comments" do
28
+ comments_count = 10
29
+ spam_comments_count = 5
30
+ post = create(:post_with_comments, comments_count: comments_count)
31
+ create_list(:spam_comment, spam_comments_count, post_id: post.id)
32
+ expect(Almanac::Comment.spam.count).to eq spam_comments_count
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,79 @@
1
+ require 'spec_helper'
2
+
3
+ describe Almanac::Post do
4
+ it "should be possible to create a valid post" do
5
+ create(:post)
6
+ expect(Almanac::Post.all.count).to eq(1)
7
+ end
8
+ it "should be possible to create a post draft without a title" do
9
+ build(:post_draft, title: "").should be_valid
10
+ end
11
+ it "should be possible to create a post draft without a body" do
12
+ build(:post_draft, body: "").should be_valid
13
+ end
14
+ it "should not be possible to create a post draft without a blog" do
15
+ build(:post_draft, blog_id: "").should_not be_valid
16
+ end
17
+ it "should not be possible to publish a post without a title" do
18
+ build(:post, title: "").should_not be_valid
19
+ end
20
+ it "should not be possible to publish a post without a body" do
21
+ build(:post, body: "").should_not be_valid
22
+ end
23
+ it "should not be possible to publish a post without a written_at" do
24
+ build(:post, written_at: nil).should_not be_valid
25
+ end
26
+ it "should be possible to publish a post without an excerpt" do
27
+ build(:post, excerpt: "").should be_valid
28
+ end
29
+ it "should not be possible to publish a post without a blog" do
30
+ build(:post, blog_id: "").should_not be_valid
31
+ end
32
+ it "should be possible to publish more than one post" do
33
+ create(:blog_with_posts, posts_count: 2)
34
+ expect(Almanac::Post.all.count).to eq(2)
35
+ end
36
+
37
+ describe ".recent" do
38
+ it "should return 10 recent posts" do
39
+ # TODO: figure out why this doesn't work in the model, but works in paginated views
40
+ #create(:blog_with_posts, posts_count: 12)
41
+ #expect(Almanac::Post.recent({}).count).to eq(10)
42
+ end
43
+ it "should not include drafts" do
44
+ posts_count = 4
45
+ drafts_count = 3
46
+ create(:blog_with_posts, posts_count: posts_count)
47
+ blog_id = Almanac::Post.first.blog_id
48
+ create_list(:post_draft, drafts_count, blog_id: blog_id)
49
+ expect(Almanac::Post.recent({}).count).to eq posts_count
50
+ end
51
+ end
52
+
53
+ describe ".drafts" do
54
+ it "should return only drafts" do
55
+ drafts_count = 3
56
+ create(:blog_with_posts, posts_count: 3)
57
+ blog_id = Almanac::Post.first.blog_id
58
+ create_list(:post_draft, drafts_count, blog_id: blog_id)
59
+ expect(Almanac::Post.drafts({}).count).to eq drafts_count
60
+ end
61
+ end
62
+
63
+ describe ".tagged" do
64
+ it "should return tagged posts" do
65
+ posts_count = 10
66
+ create(:blog_with_posts, posts_count: posts_count)
67
+ blog_id = Almanac::Post.first.blog_id
68
+ create_list(:post, 2, blog_id: blog_id, tag_list: "")
69
+ expect(Almanac::Post.tagged({ :tag_name => "common" }).count).to eq posts_count
70
+ end
71
+ it "should not return drafts" do
72
+ posts_count = 10
73
+ create(:blog_with_posts, posts_count: posts_count)
74
+ blog_id = Almanac::Post.first.blog_id
75
+ create_list(:post, 2, blog_id: blog_id, published: false)
76
+ expect(Almanac::Post.tagged({ :tag_name => "common" }).count).to eq posts_count
77
+ end
78
+ end
79
+ end
@@ -0,0 +1,37 @@
1
+ ENV["RAILS_ENV"] ||= 'test'
2
+ ENGINE_RAILS_ROOT = File.join(File.dirname(__FILE__), '../')
3
+ require File.expand_path("../dummy/config/environment", __FILE__)
4
+ require 'rspec/rails'
5
+ require 'rspec/autorun'
6
+ require 'factory_girl_rails'
7
+ require 'database_cleaner'
8
+ require 'faker'
9
+ Dir[File.join(ENGINE_RAILS_ROOT, "spec/support/**/*.rb")].each {|f| require f }
10
+
11
+ RSpec.configure do |config|
12
+ config.include FactoryGirl::Syntax::Methods
13
+ config.include Devise::TestHelpers, :type => :controller
14
+ config.infer_base_class_for_anonymous_controllers = false
15
+ config.order = "random"
16
+
17
+ config.before(:suite) do
18
+ DatabaseCleaner.strategy = :transaction
19
+ DatabaseCleaner.clean_with(:truncation)
20
+ end
21
+
22
+ config.before(:each) do
23
+ DatabaseCleaner.start
24
+ end
25
+
26
+ config.before type: :controller do
27
+ user = create(:user)
28
+ sign_in = sign_in user
29
+ Almanac::ApplicationController.send(:define_method, :current_user) do
30
+ user
31
+ end
32
+ end
33
+
34
+ config.after(:each) do
35
+ DatabaseCleaner.clean
36
+ end
37
+ end
metadata ADDED
@@ -0,0 +1,485 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: almanac
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.4.4
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Vasily Vasinov
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-11-14 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: rails
16
+ requirement: &70361439490280 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ~>
20
+ - !ruby/object:Gem::Version
21
+ version: 3.2.8
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: *70361439490280
25
+ - !ruby/object:Gem::Dependency
26
+ name: jquery-rails
27
+ requirement: &70361439489860 !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: *70361439489860
36
+ - !ruby/object:Gem::Dependency
37
+ name: haml
38
+ requirement: &70361439489400 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ! '>='
42
+ - !ruby/object:Gem::Version
43
+ version: '0'
44
+ type: :runtime
45
+ prerelease: false
46
+ version_requirements: *70361439489400
47
+ - !ruby/object:Gem::Dependency
48
+ name: haml-rails
49
+ requirement: &70361439488980 !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ type: :runtime
56
+ prerelease: false
57
+ version_requirements: *70361439488980
58
+ - !ruby/object:Gem::Dependency
59
+ name: sass-rails
60
+ requirement: &70361439488560 !ruby/object:Gem::Requirement
61
+ none: false
62
+ requirements:
63
+ - - ! '>='
64
+ - !ruby/object:Gem::Version
65
+ version: '0'
66
+ type: :runtime
67
+ prerelease: false
68
+ version_requirements: *70361439488560
69
+ - !ruby/object:Gem::Dependency
70
+ name: bootstrap-rails-engine
71
+ requirement: &70361439488140 !ruby/object:Gem::Requirement
72
+ none: false
73
+ requirements:
74
+ - - ! '>='
75
+ - !ruby/object:Gem::Version
76
+ version: '0'
77
+ type: :runtime
78
+ prerelease: false
79
+ version_requirements: *70361439488140
80
+ - !ruby/object:Gem::Dependency
81
+ name: devise
82
+ requirement: &70361439487720 !ruby/object:Gem::Requirement
83
+ none: false
84
+ requirements:
85
+ - - ! '>='
86
+ - !ruby/object:Gem::Version
87
+ version: '0'
88
+ type: :runtime
89
+ prerelease: false
90
+ version_requirements: *70361439487720
91
+ - !ruby/object:Gem::Dependency
92
+ name: cancan
93
+ requirement: &70361439487300 !ruby/object:Gem::Requirement
94
+ none: false
95
+ requirements:
96
+ - - ! '>='
97
+ - !ruby/object:Gem::Version
98
+ version: '0'
99
+ type: :runtime
100
+ prerelease: false
101
+ version_requirements: *70361439487300
102
+ - !ruby/object:Gem::Dependency
103
+ name: coffee-rails
104
+ requirement: &70361439486880 !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ! '>='
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
110
+ type: :runtime
111
+ prerelease: false
112
+ version_requirements: *70361439486880
113
+ - !ruby/object:Gem::Dependency
114
+ name: uglifier
115
+ requirement: &70361439486460 !ruby/object:Gem::Requirement
116
+ none: false
117
+ requirements:
118
+ - - ! '>='
119
+ - !ruby/object:Gem::Version
120
+ version: '0'
121
+ type: :runtime
122
+ prerelease: false
123
+ version_requirements: *70361439486460
124
+ - !ruby/object:Gem::Dependency
125
+ name: kramdown
126
+ requirement: &70361439486040 !ruby/object:Gem::Requirement
127
+ none: false
128
+ requirements:
129
+ - - ! '>='
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ type: :runtime
133
+ prerelease: false
134
+ version_requirements: *70361439486040
135
+ - !ruby/object:Gem::Dependency
136
+ name: rack-cache
137
+ requirement: &70361439485620 !ruby/object:Gem::Requirement
138
+ none: false
139
+ requirements:
140
+ - - ! '>='
141
+ - !ruby/object:Gem::Version
142
+ version: '0'
143
+ type: :runtime
144
+ prerelease: false
145
+ version_requirements: *70361439485620
146
+ - !ruby/object:Gem::Dependency
147
+ name: dragonfly
148
+ requirement: &70361439485200 !ruby/object:Gem::Requirement
149
+ none: false
150
+ requirements:
151
+ - - ! '>='
152
+ - !ruby/object:Gem::Version
153
+ version: '0'
154
+ type: :runtime
155
+ prerelease: false
156
+ version_requirements: *70361439485200
157
+ - !ruby/object:Gem::Dependency
158
+ name: mini_magick
159
+ requirement: &70361439484640 !ruby/object:Gem::Requirement
160
+ none: false
161
+ requirements:
162
+ - - ! '>='
163
+ - !ruby/object:Gem::Version
164
+ version: '0'
165
+ type: :runtime
166
+ prerelease: false
167
+ version_requirements: *70361439484640
168
+ - !ruby/object:Gem::Dependency
169
+ name: will_paginate
170
+ requirement: &70361439484120 !ruby/object:Gem::Requirement
171
+ none: false
172
+ requirements:
173
+ - - ~>
174
+ - !ruby/object:Gem::Version
175
+ version: 3.0.3
176
+ type: :runtime
177
+ prerelease: false
178
+ version_requirements: *70361439484120
179
+ - !ruby/object:Gem::Dependency
180
+ name: will_paginate-bootstrap
181
+ requirement: &70361439474400 !ruby/object:Gem::Requirement
182
+ none: false
183
+ requirements:
184
+ - - ! '>='
185
+ - !ruby/object:Gem::Version
186
+ version: '0'
187
+ type: :runtime
188
+ prerelease: false
189
+ version_requirements: *70361439474400
190
+ - !ruby/object:Gem::Dependency
191
+ name: acts-as-taggable-on
192
+ requirement: &70361439473840 !ruby/object:Gem::Requirement
193
+ none: false
194
+ requirements:
195
+ - - ~>
196
+ - !ruby/object:Gem::Version
197
+ version: 2.3.1
198
+ type: :runtime
199
+ prerelease: false
200
+ version_requirements: *70361439473840
201
+ - !ruby/object:Gem::Dependency
202
+ name: rakismet
203
+ requirement: &70361439470620 !ruby/object:Gem::Requirement
204
+ none: false
205
+ requirements:
206
+ - - ! '>='
207
+ - !ruby/object:Gem::Version
208
+ version: '0'
209
+ type: :runtime
210
+ prerelease: false
211
+ version_requirements: *70361439470620
212
+ - !ruby/object:Gem::Dependency
213
+ name: database_cleaner
214
+ requirement: &70361439470160 !ruby/object:Gem::Requirement
215
+ none: false
216
+ requirements:
217
+ - - ! '>='
218
+ - !ruby/object:Gem::Version
219
+ version: '0'
220
+ type: :runtime
221
+ prerelease: false
222
+ version_requirements: *70361439470160
223
+ - !ruby/object:Gem::Dependency
224
+ name: sqlite3
225
+ requirement: &70361439469740 !ruby/object:Gem::Requirement
226
+ none: false
227
+ requirements:
228
+ - - ! '>='
229
+ - !ruby/object:Gem::Version
230
+ version: '0'
231
+ type: :development
232
+ prerelease: false
233
+ version_requirements: *70361439469740
234
+ - !ruby/object:Gem::Dependency
235
+ name: rspec-rails
236
+ requirement: &70361439469320 !ruby/object:Gem::Requirement
237
+ none: false
238
+ requirements:
239
+ - - ! '>='
240
+ - !ruby/object:Gem::Version
241
+ version: '0'
242
+ type: :development
243
+ prerelease: false
244
+ version_requirements: *70361439469320
245
+ - !ruby/object:Gem::Dependency
246
+ name: faker
247
+ requirement: &70361439468900 !ruby/object:Gem::Requirement
248
+ none: false
249
+ requirements:
250
+ - - ! '>='
251
+ - !ruby/object:Gem::Version
252
+ version: '0'
253
+ type: :development
254
+ prerelease: false
255
+ version_requirements: *70361439468900
256
+ - !ruby/object:Gem::Dependency
257
+ name: factory_girl_rails
258
+ requirement: &70361439468480 !ruby/object:Gem::Requirement
259
+ none: false
260
+ requirements:
261
+ - - ! '>='
262
+ - !ruby/object:Gem::Version
263
+ version: '0'
264
+ type: :development
265
+ prerelease: false
266
+ version_requirements: *70361439468480
267
+ description: Almanac is the most elegant mountable blog engine that can be easily
268
+ hooked up in the existing Rails application.
269
+ email:
270
+ - vasinov@me.com
271
+ executables: []
272
+ extensions: []
273
+ extra_rdoc_files: []
274
+ files:
275
+ - app/assets/images/almanac/background.jpg
276
+ - app/assets/images/almanac/icons/compose.png
277
+ - app/assets/images/almanac/icons/feed.png
278
+ - app/assets/images/almanac/icons/gear.png
279
+ - app/assets/images/almanac/icons/glyphicons-halflings-white.png
280
+ - app/assets/images/almanac/icons/glyphicons-halflings.png
281
+ - app/assets/images/almanac/icons/upload.png
282
+ - app/assets/images/almanac/logo.jpg
283
+ - app/assets/javascripts/almanac/2-jquery.backstretch.js
284
+ - app/assets/javascripts/almanac/3-pixastic.js
285
+ - app/assets/javascripts/almanac/4-bootstrap-datepicker.js
286
+ - app/assets/javascripts/almanac/5-main.coffee.erb
287
+ - app/assets/javascripts/almanac/application.js
288
+ - app/assets/stylesheets/almanac/1-datepicker.css
289
+ - app/assets/stylesheets/almanac/2-main.css.scss
290
+ - app/assets/stylesheets/almanac/application.css
291
+ - app/controllers/almanac/application_controller.rb
292
+ - app/controllers/almanac/blogs_controller.rb
293
+ - app/controllers/almanac/comments_controller.rb
294
+ - app/controllers/almanac/images_controller.rb
295
+ - app/controllers/almanac/posts_controller.rb
296
+ - app/helpers/almanac/application_helper.rb
297
+ - app/models/almanac/blog.rb
298
+ - app/models/almanac/comment.rb
299
+ - app/models/almanac/image.rb
300
+ - app/models/almanac/post.rb
301
+ - app/views/almanac/blogs/_form.html.haml
302
+ - app/views/almanac/blogs/_topbar.html.haml
303
+ - app/views/almanac/blogs/edit.html.haml
304
+ - app/views/almanac/blogs/new.html.haml
305
+ - app/views/almanac/blogs/spam.html.haml
306
+ - app/views/almanac/posts/_form.html.haml
307
+ - app/views/almanac/posts/_post.html.haml
308
+ - app/views/almanac/posts/edit.html.haml
309
+ - app/views/almanac/posts/index.html.haml
310
+ - app/views/almanac/posts/index.rss.builder
311
+ - app/views/almanac/posts/new.html.haml
312
+ - app/views/almanac/posts/show.html.haml
313
+ - app/views/almanac/posts/tag.html.haml
314
+ - app/views/layouts/almanac/_ga.html.haml
315
+ - app/views/layouts/almanac/_twitter_follow.html.haml
316
+ - app/views/layouts/almanac/application.html.haml
317
+ - config/routes.rb
318
+ - db/migrate/20121009222451_create_almanac_posts.rb
319
+ - db/migrate/20121010033555_create_almanac_blogs.rb
320
+ - db/migrate/20121017032059_add_excerpt_to_almanac_posts.rb
321
+ - db/migrate/20121017210007_create_almanac_files.rb
322
+ - db/migrate/20121017221819_rename_file_to_image.rb
323
+ - db/migrate/20121025223403_add_image_fields_to_almanac_blogs.rb
324
+ - db/migrate/20121029211221_add_new_fields_to_blogs.rb
325
+ - db/migrate/20121029221815_acts_as_taggable_on_migration.rb
326
+ - db/migrate/20121101030836_create_almanac_comments.rb
327
+ - db/migrate/20121102181941_add_rakismet_fields_to_blogs.rb
328
+ - db/migrate/20121102185130_add_spam_to_comments.rb
329
+ - db/migrate/20121110000024_add_written_at_to_posts.rb
330
+ - db/migrate/20121112205256_add_background_fields_to_blogs.rb
331
+ - db/migrate/20121113010557_add_footer_to_almanac_blogs.rb
332
+ - db/migrate/20121114043648_change_default_value_for_background_tiles_in_almanac_blogs.rb
333
+ - lib/almanac/engine.rb
334
+ - lib/almanac/MarkdownParser.rb
335
+ - lib/almanac/version.rb
336
+ - lib/almanac.rb
337
+ - lib/tasks/almanac_tasks.rake
338
+ - MIT-LICENSE
339
+ - Rakefile
340
+ - README.md
341
+ - spec/controllers/blogs_controller_spec.rb
342
+ - spec/controllers/comments_controller_spec.rb
343
+ - spec/controllers/posts_controller_spec.rb
344
+ - spec/dummy/app/assets/javascripts/application.js
345
+ - spec/dummy/app/assets/stylesheets/application.css
346
+ - spec/dummy/app/controllers/application_controller.rb
347
+ - spec/dummy/app/helpers/application_helper.rb
348
+ - spec/dummy/app/models/ability.rb
349
+ - spec/dummy/app/models/user.rb
350
+ - spec/dummy/app/views/layouts/application.html.erb
351
+ - spec/dummy/config/application.rb
352
+ - spec/dummy/config/boot.rb
353
+ - spec/dummy/config/database.yml
354
+ - spec/dummy/config/environment.rb
355
+ - spec/dummy/config/environments/development.rb
356
+ - spec/dummy/config/environments/production.rb
357
+ - spec/dummy/config/environments/test.rb
358
+ - spec/dummy/config/initializers/almanac.rb
359
+ - spec/dummy/config/initializers/backtrace_silencers.rb
360
+ - spec/dummy/config/initializers/devise.rb
361
+ - spec/dummy/config/initializers/dragonfly.rb
362
+ - spec/dummy/config/initializers/inflections.rb
363
+ - spec/dummy/config/initializers/mime_types.rb
364
+ - spec/dummy/config/initializers/secret_token.rb
365
+ - spec/dummy/config/initializers/session_store.rb
366
+ - spec/dummy/config/initializers/wrap_parameters.rb
367
+ - spec/dummy/config/locales/en.yml
368
+ - spec/dummy/config/routes.rb
369
+ - spec/dummy/config.ru
370
+ - spec/dummy/db/migrate/20121009230705_create_almanac_posts.rb
371
+ - spec/dummy/db/migrate/20121010033827_create_almanac_blogs.rb
372
+ - spec/dummy/db/migrate/20121102224650_add_excerpt_to_almanac_posts.rb
373
+ - spec/dummy/db/migrate/20121102224651_create_almanac_files..rb
374
+ - spec/dummy/db/migrate/20121102224652_rename_file_to_image.rb
375
+ - spec/dummy/db/migrate/20121102224653_add_image_fields_to_almanac_blogs.rb
376
+ - spec/dummy/db/migrate/20121102224654_add_new_fields_to_almanac_blogs.rb
377
+ - spec/dummy/db/migrate/20121102224655_acts_as_taggable_on_migration.rb
378
+ - spec/dummy/db/migrate/20121102224656_create_almanac_comments.rb
379
+ - spec/dummy/db/migrate/20121102224657_add_rakismet_fields_to_almanac_blogs.rb
380
+ - spec/dummy/db/migrate/20121102224658_add_spam_to_almanac_comments.rb
381
+ - spec/dummy/db/migrate/20121106220325_devise_create_users.rb
382
+ - spec/dummy/db/migrate/20121114032144_add_written_at_to_almanac_posts.rb
383
+ - spec/dummy/db/migrate/20121114032145_add_background_fields_to_almanac_blogs.rb
384
+ - spec/dummy/db/migrate/20121114032146_add_footer_to_almanac_blogs.rb
385
+ - spec/dummy/db/schema.rb
386
+ - spec/dummy/db/test.sqlite3
387
+ - spec/dummy/log/production.log
388
+ - spec/dummy/log/test.log
389
+ - spec/dummy/public/404.html
390
+ - spec/dummy/public/422.html
391
+ - spec/dummy/public/500.html
392
+ - spec/dummy/public/favicon.ico
393
+ - spec/dummy/Rakefile
394
+ - spec/dummy/README.rdoc
395
+ - spec/dummy/script/rails
396
+ - spec/factories.rb
397
+ - spec/models/blog_spec.rb
398
+ - spec/models/comment_spec.rb
399
+ - spec/models/post_spec.rb
400
+ - spec/spec_helper.rb
401
+ homepage: https://github.com/vasinov/almanac
402
+ licenses: []
403
+ post_install_message:
404
+ rdoc_options: []
405
+ require_paths:
406
+ - lib
407
+ required_ruby_version: !ruby/object:Gem::Requirement
408
+ none: false
409
+ requirements:
410
+ - - ! '>='
411
+ - !ruby/object:Gem::Version
412
+ version: '0'
413
+ required_rubygems_version: !ruby/object:Gem::Requirement
414
+ none: false
415
+ requirements:
416
+ - - ! '>='
417
+ - !ruby/object:Gem::Version
418
+ version: '0'
419
+ requirements: []
420
+ rubyforge_project:
421
+ rubygems_version: 1.8.11
422
+ signing_key:
423
+ specification_version: 3
424
+ summary: The most elegant blog engine for Rails apps.
425
+ test_files:
426
+ - spec/controllers/blogs_controller_spec.rb
427
+ - spec/controllers/comments_controller_spec.rb
428
+ - spec/controllers/posts_controller_spec.rb
429
+ - spec/dummy/app/assets/javascripts/application.js
430
+ - spec/dummy/app/assets/stylesheets/application.css
431
+ - spec/dummy/app/controllers/application_controller.rb
432
+ - spec/dummy/app/helpers/application_helper.rb
433
+ - spec/dummy/app/models/ability.rb
434
+ - spec/dummy/app/models/user.rb
435
+ - spec/dummy/app/views/layouts/application.html.erb
436
+ - spec/dummy/config/application.rb
437
+ - spec/dummy/config/boot.rb
438
+ - spec/dummy/config/database.yml
439
+ - spec/dummy/config/environment.rb
440
+ - spec/dummy/config/environments/development.rb
441
+ - spec/dummy/config/environments/production.rb
442
+ - spec/dummy/config/environments/test.rb
443
+ - spec/dummy/config/initializers/almanac.rb
444
+ - spec/dummy/config/initializers/backtrace_silencers.rb
445
+ - spec/dummy/config/initializers/devise.rb
446
+ - spec/dummy/config/initializers/dragonfly.rb
447
+ - spec/dummy/config/initializers/inflections.rb
448
+ - spec/dummy/config/initializers/mime_types.rb
449
+ - spec/dummy/config/initializers/secret_token.rb
450
+ - spec/dummy/config/initializers/session_store.rb
451
+ - spec/dummy/config/initializers/wrap_parameters.rb
452
+ - spec/dummy/config/locales/en.yml
453
+ - spec/dummy/config/routes.rb
454
+ - spec/dummy/config.ru
455
+ - spec/dummy/db/migrate/20121009230705_create_almanac_posts.rb
456
+ - spec/dummy/db/migrate/20121010033827_create_almanac_blogs.rb
457
+ - spec/dummy/db/migrate/20121102224650_add_excerpt_to_almanac_posts.rb
458
+ - spec/dummy/db/migrate/20121102224651_create_almanac_files..rb
459
+ - spec/dummy/db/migrate/20121102224652_rename_file_to_image.rb
460
+ - spec/dummy/db/migrate/20121102224653_add_image_fields_to_almanac_blogs.rb
461
+ - spec/dummy/db/migrate/20121102224654_add_new_fields_to_almanac_blogs.rb
462
+ - spec/dummy/db/migrate/20121102224655_acts_as_taggable_on_migration.rb
463
+ - spec/dummy/db/migrate/20121102224656_create_almanac_comments.rb
464
+ - spec/dummy/db/migrate/20121102224657_add_rakismet_fields_to_almanac_blogs.rb
465
+ - spec/dummy/db/migrate/20121102224658_add_spam_to_almanac_comments.rb
466
+ - spec/dummy/db/migrate/20121106220325_devise_create_users.rb
467
+ - spec/dummy/db/migrate/20121114032144_add_written_at_to_almanac_posts.rb
468
+ - spec/dummy/db/migrate/20121114032145_add_background_fields_to_almanac_blogs.rb
469
+ - spec/dummy/db/migrate/20121114032146_add_footer_to_almanac_blogs.rb
470
+ - spec/dummy/db/schema.rb
471
+ - spec/dummy/db/test.sqlite3
472
+ - spec/dummy/log/production.log
473
+ - spec/dummy/log/test.log
474
+ - spec/dummy/public/404.html
475
+ - spec/dummy/public/422.html
476
+ - spec/dummy/public/500.html
477
+ - spec/dummy/public/favicon.ico
478
+ - spec/dummy/Rakefile
479
+ - spec/dummy/README.rdoc
480
+ - spec/dummy/script/rails
481
+ - spec/factories.rb
482
+ - spec/models/blog_spec.rb
483
+ - spec/models/comment_spec.rb
484
+ - spec/models/post_spec.rb
485
+ - spec/spec_helper.rb