mist 0.6.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 (147) hide show
  1. data/.gitignore +18 -0
  2. data/.rspec +1 -0
  3. data/.rvmrc +1 -0
  4. data/.travis.yml +13 -0
  5. data/Gemfile +3 -0
  6. data/Gemfile.lock +192 -0
  7. data/README.md +108 -0
  8. data/Rakefile +9 -0
  9. data/app/assets/images/mist/ui-bg_diagonals-thick_18_b81900_40x40.png +0 -0
  10. data/app/assets/images/mist/ui-bg_diagonals-thick_20_666666_40x40.png +0 -0
  11. data/app/assets/images/mist/ui-bg_flat_10_000000_40x100.png +0 -0
  12. data/app/assets/images/mist/ui-bg_glass_100_f6f6f6_1x400.png +0 -0
  13. data/app/assets/images/mist/ui-bg_glass_100_fdf5ce_1x400.png +0 -0
  14. data/app/assets/images/mist/ui-bg_glass_65_ffffff_1x400.png +0 -0
  15. data/app/assets/images/mist/ui-bg_gloss-wave_35_f6a828_500x100.png +0 -0
  16. data/app/assets/images/mist/ui-bg_highlight-soft_100_eeeeee_1x100.png +0 -0
  17. data/app/assets/images/mist/ui-bg_highlight-soft_75_ffe45c_1x100.png +0 -0
  18. data/app/assets/images/mist/ui-icons_222222_256x240.png +0 -0
  19. data/app/assets/images/mist/ui-icons_228ef1_256x240.png +0 -0
  20. data/app/assets/images/mist/ui-icons_ef8c08_256x240.png +0 -0
  21. data/app/assets/images/mist/ui-icons_ffd27a_256x240.png +0 -0
  22. data/app/assets/images/mist/ui-icons_ffffff_256x240.png +0 -0
  23. data/app/assets/javascripts/mist/jquery-ui-1.8.17.custom.min.js +356 -0
  24. data/app/assets/javascripts/mist/posts.js.coffee +3 -0
  25. data/app/assets/javascripts/mist_core.js +3 -0
  26. data/app/assets/stylesheets/mist/posts.css.sass +97 -0
  27. data/app/assets/stylesheets/mist/scaffolds.css.scss +56 -0
  28. data/app/assets/stylesheets/mist/ui-lightness/jquery-ui-1.8.17.custom.css +565 -0
  29. data/app/assets/stylesheets/mist_core.css +4 -0
  30. data/app/controllers/application_controller.rb +3 -0
  31. data/app/controllers/mist/posts_controller.rb +130 -0
  32. data/app/helpers/mist/posts_helper.rb +61 -0
  33. data/app/mailers/.gitkeep +0 -0
  34. data/app/models/.gitkeep +0 -0
  35. data/app/models/mist/post.rb +240 -0
  36. data/app/models/mist/post_sweeper.rb +63 -0
  37. data/app/views/layouts/mist/posts.html.erb +66 -0
  38. data/app/views/mist/posts/_form.html.erb +55 -0
  39. data/app/views/mist/posts/_post.html.erb +19 -0
  40. data/app/views/mist/posts/_sidebar_title.html.erb +5 -0
  41. data/app/views/mist/posts/edit.html.erb +16 -0
  42. data/app/views/mist/posts/feed.atom.builder +17 -0
  43. data/app/views/mist/posts/index.html.erb +31 -0
  44. data/app/views/mist/posts/new.html.erb +15 -0
  45. data/app/views/mist/posts/show.html.erb +3 -0
  46. data/config/cucumber.yml +8 -0
  47. data/config/environment.rb +1 -0
  48. data/config/routes.rb +7 -0
  49. data/features/atom_feed.feature +20 -0
  50. data/features/authorize_create_post.feature +14 -0
  51. data/features/authorize_destroy_post.feature +27 -0
  52. data/features/authorize_update_post.feature +28 -0
  53. data/features/authorize_view_unpublished.feature +22 -0
  54. data/features/create_post.feature +13 -0
  55. data/features/destroy_post.feature +13 -0
  56. data/features/format_with_markdown.feature +13 -0
  57. data/features/popular_posts.feature +35 -0
  58. data/features/recent_posts.feature +28 -0
  59. data/features/similar_posts.feature +43 -0
  60. data/features/step_definitions/authorization_steps.rb +17 -0
  61. data/features/step_definitions/filesystem_steps.rb +13 -0
  62. data/features/step_definitions/page_steps.rb +43 -0
  63. data/features/step_definitions/post_steps.rb +58 -0
  64. data/features/step_definitions/sidebar_steps.rb +21 -0
  65. data/features/support/env.rb +58 -0
  66. data/features/support/setup.rb +15 -0
  67. data/features/update_post.feature +19 -0
  68. data/gemfiles/common +20 -0
  69. data/gemfiles/rails-3.1.3 +4 -0
  70. data/gemfiles/rails-3.1.3.lock +195 -0
  71. data/gemfiles/rails-3.2.0 +4 -0
  72. data/lib/generators/mist/USAGE +13 -0
  73. data/lib/generators/mist/setup_generator.rb +21 -0
  74. data/lib/generators/mist/templates/initializer.rb +17 -0
  75. data/lib/generators/mist/templates/mist.css.scss +2 -0
  76. data/lib/generators/mist/templates/mist.js.coffee +1 -0
  77. data/lib/generators/mist/views_generator.rb +11 -0
  78. data/lib/mist.rb +26 -0
  79. data/lib/mist/code_example_parser.rb +86 -0
  80. data/lib/mist/configuration.rb +68 -0
  81. data/lib/mist/configuration/author.rb +8 -0
  82. data/lib/mist/engine.rb +12 -0
  83. data/lib/mist/git_file_system_history.rb +66 -0
  84. data/lib/mist/git_model.rb +154 -0
  85. data/lib/mist/git_model/attributes.rb +21 -0
  86. data/lib/mist/git_model/class_methods.rb +141 -0
  87. data/lib/mist/permalink.rb +5 -0
  88. data/lib/mist/repository.rb +15 -0
  89. data/lib/mist/version.rb +8 -0
  90. data/mist.gemspec +33 -0
  91. data/spec/controllers/posts_controller_spec.rb +263 -0
  92. data/spec/dummy_rails_app/app/assets/javascripts/mist.js.coffee +1 -0
  93. data/spec/dummy_rails_app/app/assets/stylesheets/mist.css.scss +2 -0
  94. data/spec/dummy_rails_app/app/views/layouts/mist/posts.html.erb +60 -0
  95. data/spec/dummy_rails_app/config.ru +4 -0
  96. data/spec/dummy_rails_app/config/application.rb +48 -0
  97. data/spec/dummy_rails_app/config/boot.rb +7 -0
  98. data/spec/dummy_rails_app/config/database.yml +28 -0
  99. data/spec/dummy_rails_app/config/environment.rb +5 -0
  100. data/spec/dummy_rails_app/config/environments/development.rb +32 -0
  101. data/spec/dummy_rails_app/config/environments/production.rb +60 -0
  102. data/spec/dummy_rails_app/config/environments/test.rb +42 -0
  103. data/spec/dummy_rails_app/config/initializers/active_gist_credentials.rb +8 -0
  104. data/spec/dummy_rails_app/config/initializers/backtrace_silencers.rb +7 -0
  105. data/spec/dummy_rails_app/config/initializers/inflections.rb +10 -0
  106. data/spec/dummy_rails_app/config/initializers/mime_types.rb +5 -0
  107. data/spec/dummy_rails_app/config/initializers/mist.rb +17 -0
  108. data/spec/dummy_rails_app/config/initializers/secret_token.rb +7 -0
  109. data/spec/dummy_rails_app/config/initializers/session_store.rb +8 -0
  110. data/spec/dummy_rails_app/config/initializers/wrap_parameters.rb +14 -0
  111. data/spec/dummy_rails_app/config/locales/en.yml +5 -0
  112. data/spec/dummy_rails_app/config/routes.rb +3 -0
  113. data/spec/dummy_rails_app/db/schema.rb +22 -0
  114. data/spec/dummy_rails_app/db/seeds.rb +7 -0
  115. data/spec/dummy_rails_app/doc/README_FOR_APP +2 -0
  116. data/spec/dummy_rails_app/lib/assets/.gitkeep +0 -0
  117. data/spec/dummy_rails_app/lib/tasks/.gitkeep +0 -0
  118. data/spec/dummy_rails_app/lib/tasks/cucumber.rake +65 -0
  119. data/spec/dummy_rails_app/public/404.html +26 -0
  120. data/spec/dummy_rails_app/public/422.html +26 -0
  121. data/spec/dummy_rails_app/public/500.html +26 -0
  122. data/spec/dummy_rails_app/public/favicon.ico +0 -0
  123. data/spec/dummy_rails_app/public/robots.txt +5 -0
  124. data/spec/dummy_rails_app/script/cucumber +10 -0
  125. data/spec/dummy_rails_app/script/rails +6 -0
  126. data/spec/dummy_rails_app/vendor/assets/stylesheets/.gitkeep +0 -0
  127. data/spec/dummy_rails_app/vendor/plugins/.gitkeep +0 -0
  128. data/spec/factories/posts.rb +8 -0
  129. data/spec/fixtures/gist_404 +6 -0
  130. data/spec/fixtures/gist_with_1_code_example +66 -0
  131. data/spec/helpers/posts_helper_spec.rb +64 -0
  132. data/spec/lib/mist/code_example_parser_spec.rb +135 -0
  133. data/spec/lib/mist/configuration_spec.rb +88 -0
  134. data/spec/lib/mist/permalink_spec.rb +17 -0
  135. data/spec/lib/mist/repository_spec.rb +20 -0
  136. data/spec/models/mist/git_model_spec.rb +260 -0
  137. data/spec/models/mist/post_spec.rb +575 -0
  138. data/spec/requests/posts_caching_spec.rb +152 -0
  139. data/spec/spec_helper.rb +20 -0
  140. data/spec/support/cache_helpers.rb +71 -0
  141. data/spec/support/config.rb +42 -0
  142. data/spec/support/fakeweb.rb +3 -0
  143. data/spec/views/mist/posts/edit.html.erb_spec.rb +11 -0
  144. data/spec/views/mist/posts/index.html.erb_spec.rb +27 -0
  145. data/spec/views/mist/posts/new.html.erb_spec.rb +15 -0
  146. data/spec/views/mist/posts/show.html.erb_spec.rb +11 -0
  147. metadata +371 -0
@@ -0,0 +1,152 @@
1
+ require 'spec_helper'
2
+
3
+ describe "Posts cache" do
4
+ before do
5
+ ## NO IDEA why this has to happen, but it corrects a failure when run alongside other tests
6
+ # it seems to be related to class reloading but I don't know why
7
+ get posts_path
8
+
9
+ ActionController::Base.perform_caching = true
10
+ FileUtils.rm_rf Rails.root.join('tmp/cache')
11
+ Mist.authorize { true }
12
+ end
13
+
14
+ after do
15
+ ActionController::Base.perform_caching = false
16
+ end
17
+
18
+ describe "busting" do
19
+ it "should happen when a post is created" do
20
+ Mist::PostSweeper.instance.should_receive(:bust!)
21
+ create :post
22
+ end
23
+
24
+ describe "with a post already existing" do
25
+ before do
26
+ create :post
27
+ end
28
+
29
+ it "should happen when a post is updated" do
30
+ Mist::PostSweeper.instance.should_receive(:bust!)
31
+ p = Mist::Post.last
32
+ p.content += "one"
33
+ p.save
34
+ end
35
+
36
+ it "should happen when a post is deleted" do
37
+ Mist::PostSweeper.instance.should_receive(:bust!)
38
+ Mist::Post.last.destroy
39
+ end
40
+ end
41
+ end
42
+
43
+ # now handled in cucumber
44
+
45
+ # describe "GET /posts/show" do
46
+ # before do
47
+ # post posts_path, :post => attributes_for(:post)
48
+ # @post = Mist::Post.last
49
+ # show_post_cache_path.should_not be_cached # sanity check
50
+ # end
51
+ #
52
+ # it "should prime the cache" do
53
+ # get post_path(@post.id)
54
+ # show_post_cache_path.should be_cached
55
+ # end
56
+ #
57
+ # describe "after priming the cache" do
58
+ # before { get post_path(@post.id) }
59
+ #
60
+ # it "should not be busted by a new post" do
61
+ # post posts_path, :post => attributes_for(:post).merge(:title => "another")
62
+ # show_post_cache_path.should be_cached
63
+ # end
64
+ #
65
+ # it "should be busted by updating the same post" do
66
+ # put post_path(@post.id), :post => { :content => "#{@post.content}1" }
67
+ # show_post_cache_path.should_not be_cached
68
+ # end
69
+ #
70
+ # it "should not be busted by updating a different post" do
71
+ # another = create :post, :title => "another"
72
+ # put post_path(another.id), :post => { :content => "#{another.content}1" }
73
+ # show_post_cache_path.should be_cached
74
+ # end
75
+ #
76
+ # it "should be busted by destroying the same post" do
77
+ # delete post_path(@post.id)
78
+ # show_post_cache_path.should_not be_cached
79
+ # end
80
+ #
81
+ # it "should not be busted by destroying a different post" do
82
+ # another = create :post, :title => 'another'
83
+ # delete post_path(another.id)
84
+ # show_post_cache_path.should be_cached
85
+ # end
86
+ # end
87
+ # end
88
+ #
89
+ # describe "GET /posts/new" do
90
+ # before { posts_cache_path(:action => 'new').should_not be_cached } # sanity check
91
+ #
92
+ # # it's never cached because of the form's auth token
93
+ # it "should not prime the cache" do
94
+ # get new_post_path
95
+ # posts_cache_path(:action => 'new').should_not be_cached
96
+ # end
97
+ # end
98
+ #
99
+ # describe "GET /posts/feed" do
100
+ # before { posts_feed_cache_path.should_not be_cached } # sanity check
101
+ #
102
+ # it "should prime the cache" do
103
+ # get feed_posts_path(:format => 'atom')
104
+ # posts_feed_cache_path.should be_cached
105
+ # end
106
+ #
107
+ # it "should be busted by a new post" do
108
+ # get feed_posts_path(:format => 'atom')
109
+ # post posts_path, :post => attributes_for(:post)
110
+ # posts_feed_cache_path.should_not be_cached
111
+ # end
112
+ # end
113
+ #
114
+ # describe "GET /posts" do
115
+ # before { posts_cache_path.should_not be_cached } # sanity check
116
+ #
117
+ # describe "when not logged in" do
118
+ # it "should prime the cache" do
119
+ # get posts_path
120
+ # posts_cache_path.should be_cached
121
+ # end
122
+ #
123
+ # it "should be busted by a new post" do
124
+ # get posts_path
125
+ # post posts_path, :post => attributes_for(:post)
126
+ # posts_cache_path.should_not be_cached
127
+ # end
128
+ # end
129
+ #
130
+ # describe "when logged in" do
131
+ # before { Mist.authorize { true } }
132
+ # before { posts_cache_path(:admin => true).should_not be_cached }
133
+ #
134
+ # it "should not use the public cache" do
135
+ # get posts_path
136
+ # posts_cache_path.should_not be_cached
137
+ # end
138
+ #
139
+ # it "should prime the cache" do
140
+ # get posts_path
141
+ # posts_cache_path(:admin => true).should be_cached
142
+ # end
143
+ #
144
+ # it "should be busted by a new post" do
145
+ # get posts_path
146
+ # post posts_path, :post => attributes_for(:post)
147
+ # posts_cache_path(:admin => true).should_not be_cached
148
+ # end
149
+ # end
150
+ # end
151
+ #
152
+ end
@@ -0,0 +1,20 @@
1
+ ENV["RAILS_ENV"] ||= 'test'
2
+ require File.expand_path("../dummy_rails_app/config/environment", __FILE__)
3
+ require 'rspec/rails'
4
+ require 'rspec/autorun'
5
+ require 'factory_girl_rails'
6
+
7
+ ActionController::Base.perform_caching = false
8
+
9
+ RSpec.configure do |config|
10
+ config.fixture_path = "#{::Rails.root}/spec/fixtures"
11
+ config.use_transactional_fixtures = false
12
+ config.infer_base_class_for_anonymous_controllers = false
13
+ config.before do
14
+ ActionController::Base.perform_caching = false
15
+ end
16
+ end
17
+
18
+ Dir[File.expand_path('factories/**/*.rb', File.dirname(__FILE__))].each { |f| require f }
19
+ Dir[Rails.root.join("spec/support/**/*.rb")].each {|f| require f}
20
+ Dir[File.expand_path('support/**/*.rb', File.dirname(__FILE__))].each { |f| require f }
@@ -0,0 +1,71 @@
1
+ module CacheHelpers
2
+ ActionController::Base.public_class_method :page_cache_path
3
+
4
+ class CacheMatcher
5
+ def initialize(method = :cached?)
6
+ @method = method
7
+ end
8
+
9
+ def matches?(actual)
10
+ (@actual = actual).send @method
11
+ end
12
+
13
+ def failure_message
14
+ "Expected path #{@actual.inspect} to be cached, but was not"
15
+ end
16
+
17
+ def negative_failure_message
18
+ "Expected path #{@actual.inspect} not to be cached, but it was"
19
+ end
20
+ end
21
+
22
+ def be_cached
23
+ CacheMatcher.new
24
+ end
25
+
26
+ def be_action_cached
27
+ CacheMatcher.new(:action_cached?)
28
+ end
29
+
30
+ def be_page_cached
31
+ CacheMatcher.new(:page_cached?)
32
+ end
33
+
34
+ def posts_cache_path(options = {})
35
+ ActionController::Caching::Actions::ActionCachePath.new(controller, options.merge(:only_path => true)).path
36
+ end
37
+
38
+ def show_post_cache_path
39
+ posts_cache_path :action => 'show', :id => @post.id
40
+ end
41
+
42
+ def posts_feed_cache_path
43
+ posts_cache_path :action => 'feed', :format => 'atom'
44
+ end
45
+
46
+ def self.included(base)
47
+ base.class_eval do
48
+ before do
49
+ path = File.dirname(File.expand_path(ActionController::Base.page_cache_path('/posts/index')))
50
+ FileUtils.rm_rf path
51
+
52
+ path = File.expand_path('../dummy_rails_app/public/posts.html', File.dirname(__FILE__))
53
+ FileUtils.rm path if File.exist?(path)
54
+ end
55
+ end
56
+ end
57
+ end
58
+
59
+ class String
60
+ def action_cached?
61
+ Rails.cache.exist?(File.join 'views', 'www.example.com', self)
62
+ end
63
+
64
+ def page_cached?
65
+ File.exists? ActionController::Base.page_cache_path(self)
66
+ end
67
+
68
+ def cached?
69
+ action_cached? || page_cached?
70
+ end
71
+ end
@@ -0,0 +1,42 @@
1
+ def fixture(name)
2
+ File.read(File.expand_path(File.join("../fixtures", name), File.dirname(__FILE__)))
3
+ end
4
+
5
+ module MistControllerSpecOverrides
6
+ def self.included(base)
7
+ base.class_eval do
8
+ unless instance_methods.include?(:__get)
9
+ %w(get post put delete).each do |m|
10
+ eval <<-end_code, binding, __FILE__, __LINE__ + 1
11
+ alias __#{m} #{m}
12
+
13
+ def #{m}(action, parameters = {}, session = nil, flash = nil)
14
+ __#{m}(action, parameters.merge(:use_route => :mist), session, flash)
15
+ end
16
+ end_code
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
22
+
23
+ module MistViewRouteHelpers
24
+ def self.included(base)
25
+ base.helper Mist::Engine.routes.url_helpers
26
+ end
27
+ end
28
+
29
+ RSpec.configure do |config|
30
+ config.before do
31
+ FileUtils.rm_rf Mist.repository_location if File.directory?(Mist.repository_location)
32
+ FileUtils.rm_rf Rails.application.root.join('tmp/cache') if File.directory?(Rails.application.root.join('tmp/cache'))
33
+ Mist.reload_repository!
34
+ Mist.reset_authorizations!
35
+ end
36
+
37
+ config.include FactoryGirl::Syntax::Methods
38
+ config.include CacheHelpers, :type => :request
39
+ config.include MistControllerSpecOverrides, :type => :controller
40
+ config.include Mist::Engine.routes.url_helpers
41
+ config.include MistViewRouteHelpers, :type => :view
42
+ end
@@ -0,0 +1,3 @@
1
+ require 'fakeweb'
2
+
3
+ FakeWeb.allow_net_connect = false
@@ -0,0 +1,11 @@
1
+ require 'spec_helper'
2
+
3
+ describe "mist/posts/edit" do
4
+ before(:each) do
5
+ @post = assign(:post, create(:post))
6
+ end
7
+
8
+ it "renders the edit post form" do
9
+ render
10
+ end
11
+ end
@@ -0,0 +1,27 @@
1
+ require 'spec_helper'
2
+
3
+ describe "mist/posts/index" do
4
+ NUMBERS = %w(one two three four five six seven eight nine ten)
5
+
6
+ before(:each) do
7
+ list = []
8
+ NUMBERS.each do |n|
9
+ list << create(:post, :title => n, :published => true, :content => "#{n}-Paragraph1\n\n#{n}-Paragraph2")
10
+ end
11
+ assign(:posts, list)
12
+ end
13
+
14
+ it "renders the full content of the first post" do
15
+ render
16
+ rendered.should =~ /one-Paragraph1/
17
+ rendered.should =~ /one-Paragraph2/
18
+ end
19
+
20
+ it "renders only the first paragraph of all other posts" do
21
+ render
22
+ NUMBERS[1..-1].each do |n|
23
+ rendered.should =~ /#{n}-Paragraph1/
24
+ rendered.should_not =~ /#{n}-Paragraph2/
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,15 @@
1
+ require 'spec_helper'
2
+
3
+ describe "mist/posts/new" do
4
+ before(:each) do
5
+ assign(:post, build(:post))
6
+ end
7
+
8
+ it "renders new post form" do
9
+ render
10
+
11
+ # Run the generator again with the --webrat flag if you want to use webrat matchers
12
+ assert_select "form", :action => posts_path, :method => "post" do
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,11 @@
1
+ require 'spec_helper'
2
+
3
+ describe "mist/posts/show" do
4
+ before(:each) do
5
+ @post = assign(:post, create(:post))
6
+ end
7
+
8
+ it "renders attributes in <p>" do
9
+ render
10
+ end
11
+ end
metadata ADDED
@@ -0,0 +1,371 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: mist
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.6.0
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Colin MacKenzie IV
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-01-27 00:00:00.000000000Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: git
16
+ requirement: &2162694360 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ~>
20
+ - !ruby/object:Gem::Version
21
+ version: '1.2'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: *2162694360
25
+ - !ruby/object:Gem::Dependency
26
+ name: github-markup
27
+ requirement: &2162693740 !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ~>
31
+ - !ruby/object:Gem::Version
32
+ version: '0.7'
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: *2162693740
36
+ - !ruby/object:Gem::Dependency
37
+ name: redcarpet
38
+ requirement: &2162693140 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ~>
42
+ - !ruby/object:Gem::Version
43
+ version: '2.0'
44
+ type: :runtime
45
+ prerelease: false
46
+ version_requirements: *2162693140
47
+ - !ruby/object:Gem::Dependency
48
+ name: activegist
49
+ requirement: &2162692460 !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ~>
53
+ - !ruby/object:Gem::Version
54
+ version: '0.6'
55
+ type: :runtime
56
+ prerelease: false
57
+ version_requirements: *2162692460
58
+ - !ruby/object:Gem::Dependency
59
+ name: cucumber-rails
60
+ requirement: &2162691800 !ruby/object:Gem::Requirement
61
+ none: false
62
+ requirements:
63
+ - - ~>
64
+ - !ruby/object:Gem::Version
65
+ version: 1.2.1
66
+ type: :development
67
+ prerelease: false
68
+ version_requirements: *2162691800
69
+ - !ruby/object:Gem::Dependency
70
+ name: database_cleaner
71
+ requirement: &2162691020 !ruby/object:Gem::Requirement
72
+ none: false
73
+ requirements:
74
+ - - ~>
75
+ - !ruby/object:Gem::Version
76
+ version: 0.7.0
77
+ type: :development
78
+ prerelease: false
79
+ version_requirements: *2162691020
80
+ - !ruby/object:Gem::Dependency
81
+ name: rspec-rails
82
+ requirement: &2162690340 !ruby/object:Gem::Requirement
83
+ none: false
84
+ requirements:
85
+ - - ~>
86
+ - !ruby/object:Gem::Version
87
+ version: 2.8.1
88
+ type: :development
89
+ prerelease: false
90
+ version_requirements: *2162690340
91
+ - !ruby/object:Gem::Dependency
92
+ name: fakeweb
93
+ requirement: &2162689660 !ruby/object:Gem::Requirement
94
+ none: false
95
+ requirements:
96
+ - - ~>
97
+ - !ruby/object:Gem::Version
98
+ version: 1.3.0
99
+ type: :development
100
+ prerelease: false
101
+ version_requirements: *2162689660
102
+ - !ruby/object:Gem::Dependency
103
+ name: factory_girl_rails
104
+ requirement: &2162688920 !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - =
108
+ - !ruby/object:Gem::Version
109
+ version: 1.4.0
110
+ type: :development
111
+ prerelease: false
112
+ version_requirements: *2162688920
113
+ description: a git-powered, gist-backed blogging engine for Rails 3
114
+ email:
115
+ - sinisterchipmunk@gmail.com
116
+ executables: []
117
+ extensions: []
118
+ extra_rdoc_files: []
119
+ files:
120
+ - .gitignore
121
+ - .rspec
122
+ - .rvmrc
123
+ - .travis.yml
124
+ - Gemfile
125
+ - Gemfile.lock
126
+ - README.md
127
+ - Rakefile
128
+ - app/assets/images/mist/ui-bg_diagonals-thick_18_b81900_40x40.png
129
+ - app/assets/images/mist/ui-bg_diagonals-thick_20_666666_40x40.png
130
+ - app/assets/images/mist/ui-bg_flat_10_000000_40x100.png
131
+ - app/assets/images/mist/ui-bg_glass_100_f6f6f6_1x400.png
132
+ - app/assets/images/mist/ui-bg_glass_100_fdf5ce_1x400.png
133
+ - app/assets/images/mist/ui-bg_glass_65_ffffff_1x400.png
134
+ - app/assets/images/mist/ui-bg_gloss-wave_35_f6a828_500x100.png
135
+ - app/assets/images/mist/ui-bg_highlight-soft_100_eeeeee_1x100.png
136
+ - app/assets/images/mist/ui-bg_highlight-soft_75_ffe45c_1x100.png
137
+ - app/assets/images/mist/ui-icons_222222_256x240.png
138
+ - app/assets/images/mist/ui-icons_228ef1_256x240.png
139
+ - app/assets/images/mist/ui-icons_ef8c08_256x240.png
140
+ - app/assets/images/mist/ui-icons_ffd27a_256x240.png
141
+ - app/assets/images/mist/ui-icons_ffffff_256x240.png
142
+ - app/assets/javascripts/mist/jquery-ui-1.8.17.custom.min.js
143
+ - app/assets/javascripts/mist/posts.js.coffee
144
+ - app/assets/javascripts/mist_core.js
145
+ - app/assets/stylesheets/mist/posts.css.sass
146
+ - app/assets/stylesheets/mist/scaffolds.css.scss
147
+ - app/assets/stylesheets/mist/ui-lightness/jquery-ui-1.8.17.custom.css
148
+ - app/assets/stylesheets/mist_core.css
149
+ - app/controllers/application_controller.rb
150
+ - app/controllers/mist/posts_controller.rb
151
+ - app/helpers/mist/posts_helper.rb
152
+ - app/mailers/.gitkeep
153
+ - app/models/.gitkeep
154
+ - app/models/mist/post.rb
155
+ - app/models/mist/post_sweeper.rb
156
+ - app/views/layouts/mist/posts.html.erb
157
+ - app/views/mist/posts/_form.html.erb
158
+ - app/views/mist/posts/_post.html.erb
159
+ - app/views/mist/posts/_sidebar_title.html.erb
160
+ - app/views/mist/posts/edit.html.erb
161
+ - app/views/mist/posts/feed.atom.builder
162
+ - app/views/mist/posts/index.html.erb
163
+ - app/views/mist/posts/new.html.erb
164
+ - app/views/mist/posts/show.html.erb
165
+ - config/cucumber.yml
166
+ - config/environment.rb
167
+ - config/routes.rb
168
+ - features/atom_feed.feature
169
+ - features/authorize_create_post.feature
170
+ - features/authorize_destroy_post.feature
171
+ - features/authorize_update_post.feature
172
+ - features/authorize_view_unpublished.feature
173
+ - features/create_post.feature
174
+ - features/destroy_post.feature
175
+ - features/format_with_markdown.feature
176
+ - features/popular_posts.feature
177
+ - features/recent_posts.feature
178
+ - features/similar_posts.feature
179
+ - features/step_definitions/authorization_steps.rb
180
+ - features/step_definitions/filesystem_steps.rb
181
+ - features/step_definitions/page_steps.rb
182
+ - features/step_definitions/post_steps.rb
183
+ - features/step_definitions/sidebar_steps.rb
184
+ - features/support/env.rb
185
+ - features/support/setup.rb
186
+ - features/update_post.feature
187
+ - gemfiles/common
188
+ - gemfiles/rails-3.1.3
189
+ - gemfiles/rails-3.1.3.lock
190
+ - gemfiles/rails-3.2.0
191
+ - lib/generators/mist/USAGE
192
+ - lib/generators/mist/setup_generator.rb
193
+ - lib/generators/mist/templates/initializer.rb
194
+ - lib/generators/mist/templates/mist.css.scss
195
+ - lib/generators/mist/templates/mist.js.coffee
196
+ - lib/generators/mist/views_generator.rb
197
+ - lib/mist.rb
198
+ - lib/mist/code_example_parser.rb
199
+ - lib/mist/configuration.rb
200
+ - lib/mist/configuration/author.rb
201
+ - lib/mist/engine.rb
202
+ - lib/mist/git_file_system_history.rb
203
+ - lib/mist/git_model.rb
204
+ - lib/mist/git_model/attributes.rb
205
+ - lib/mist/git_model/class_methods.rb
206
+ - lib/mist/permalink.rb
207
+ - lib/mist/repository.rb
208
+ - lib/mist/version.rb
209
+ - mist.gemspec
210
+ - spec/controllers/posts_controller_spec.rb
211
+ - spec/dummy_rails_app/app/assets/javascripts/mist.js.coffee
212
+ - spec/dummy_rails_app/app/assets/stylesheets/mist.css.scss
213
+ - spec/dummy_rails_app/app/views/layouts/mist/posts.html.erb
214
+ - spec/dummy_rails_app/config.ru
215
+ - spec/dummy_rails_app/config/application.rb
216
+ - spec/dummy_rails_app/config/boot.rb
217
+ - spec/dummy_rails_app/config/database.yml
218
+ - spec/dummy_rails_app/config/environment.rb
219
+ - spec/dummy_rails_app/config/environments/development.rb
220
+ - spec/dummy_rails_app/config/environments/production.rb
221
+ - spec/dummy_rails_app/config/environments/test.rb
222
+ - spec/dummy_rails_app/config/initializers/active_gist_credentials.rb
223
+ - spec/dummy_rails_app/config/initializers/backtrace_silencers.rb
224
+ - spec/dummy_rails_app/config/initializers/inflections.rb
225
+ - spec/dummy_rails_app/config/initializers/mime_types.rb
226
+ - spec/dummy_rails_app/config/initializers/mist.rb
227
+ - spec/dummy_rails_app/config/initializers/secret_token.rb
228
+ - spec/dummy_rails_app/config/initializers/session_store.rb
229
+ - spec/dummy_rails_app/config/initializers/wrap_parameters.rb
230
+ - spec/dummy_rails_app/config/locales/en.yml
231
+ - spec/dummy_rails_app/config/routes.rb
232
+ - spec/dummy_rails_app/db/schema.rb
233
+ - spec/dummy_rails_app/db/seeds.rb
234
+ - spec/dummy_rails_app/doc/README_FOR_APP
235
+ - spec/dummy_rails_app/lib/assets/.gitkeep
236
+ - spec/dummy_rails_app/lib/tasks/.gitkeep
237
+ - spec/dummy_rails_app/lib/tasks/cucumber.rake
238
+ - spec/dummy_rails_app/public/404.html
239
+ - spec/dummy_rails_app/public/422.html
240
+ - spec/dummy_rails_app/public/500.html
241
+ - spec/dummy_rails_app/public/favicon.ico
242
+ - spec/dummy_rails_app/public/robots.txt
243
+ - spec/dummy_rails_app/script/cucumber
244
+ - spec/dummy_rails_app/script/rails
245
+ - spec/dummy_rails_app/vendor/assets/stylesheets/.gitkeep
246
+ - spec/dummy_rails_app/vendor/plugins/.gitkeep
247
+ - spec/factories/posts.rb
248
+ - spec/fixtures/gist_404
249
+ - spec/fixtures/gist_with_1_code_example
250
+ - spec/helpers/posts_helper_spec.rb
251
+ - spec/lib/mist/code_example_parser_spec.rb
252
+ - spec/lib/mist/configuration_spec.rb
253
+ - spec/lib/mist/permalink_spec.rb
254
+ - spec/lib/mist/repository_spec.rb
255
+ - spec/models/mist/git_model_spec.rb
256
+ - spec/models/mist/post_spec.rb
257
+ - spec/requests/posts_caching_spec.rb
258
+ - spec/spec_helper.rb
259
+ - spec/support/cache_helpers.rb
260
+ - spec/support/config.rb
261
+ - spec/support/fakeweb.rb
262
+ - spec/views/mist/posts/edit.html.erb_spec.rb
263
+ - spec/views/mist/posts/index.html.erb_spec.rb
264
+ - spec/views/mist/posts/new.html.erb_spec.rb
265
+ - spec/views/mist/posts/show.html.erb_spec.rb
266
+ homepage: http://github.com/sinisterchipmunk/mist
267
+ licenses: []
268
+ post_install_message:
269
+ rdoc_options: []
270
+ require_paths:
271
+ - lib
272
+ required_ruby_version: !ruby/object:Gem::Requirement
273
+ none: false
274
+ requirements:
275
+ - - ! '>='
276
+ - !ruby/object:Gem::Version
277
+ version: '0'
278
+ segments:
279
+ - 0
280
+ hash: -2905108893950949948
281
+ required_rubygems_version: !ruby/object:Gem::Requirement
282
+ none: false
283
+ requirements:
284
+ - - ! '>='
285
+ - !ruby/object:Gem::Version
286
+ version: '0'
287
+ segments:
288
+ - 0
289
+ hash: -2905108893950949948
290
+ requirements: []
291
+ rubyforge_project: mist
292
+ rubygems_version: 1.8.10
293
+ signing_key:
294
+ specification_version: 3
295
+ summary: a git-powered, gist-backed blogging engine for Rails 3
296
+ test_files:
297
+ - features/atom_feed.feature
298
+ - features/authorize_create_post.feature
299
+ - features/authorize_destroy_post.feature
300
+ - features/authorize_update_post.feature
301
+ - features/authorize_view_unpublished.feature
302
+ - features/create_post.feature
303
+ - features/destroy_post.feature
304
+ - features/format_with_markdown.feature
305
+ - features/popular_posts.feature
306
+ - features/recent_posts.feature
307
+ - features/similar_posts.feature
308
+ - features/step_definitions/authorization_steps.rb
309
+ - features/step_definitions/filesystem_steps.rb
310
+ - features/step_definitions/page_steps.rb
311
+ - features/step_definitions/post_steps.rb
312
+ - features/step_definitions/sidebar_steps.rb
313
+ - features/support/env.rb
314
+ - features/support/setup.rb
315
+ - features/update_post.feature
316
+ - spec/controllers/posts_controller_spec.rb
317
+ - spec/dummy_rails_app/app/assets/javascripts/mist.js.coffee
318
+ - spec/dummy_rails_app/app/assets/stylesheets/mist.css.scss
319
+ - spec/dummy_rails_app/app/views/layouts/mist/posts.html.erb
320
+ - spec/dummy_rails_app/config.ru
321
+ - spec/dummy_rails_app/config/application.rb
322
+ - spec/dummy_rails_app/config/boot.rb
323
+ - spec/dummy_rails_app/config/database.yml
324
+ - spec/dummy_rails_app/config/environment.rb
325
+ - spec/dummy_rails_app/config/environments/development.rb
326
+ - spec/dummy_rails_app/config/environments/production.rb
327
+ - spec/dummy_rails_app/config/environments/test.rb
328
+ - spec/dummy_rails_app/config/initializers/active_gist_credentials.rb
329
+ - spec/dummy_rails_app/config/initializers/backtrace_silencers.rb
330
+ - spec/dummy_rails_app/config/initializers/inflections.rb
331
+ - spec/dummy_rails_app/config/initializers/mime_types.rb
332
+ - spec/dummy_rails_app/config/initializers/mist.rb
333
+ - spec/dummy_rails_app/config/initializers/secret_token.rb
334
+ - spec/dummy_rails_app/config/initializers/session_store.rb
335
+ - spec/dummy_rails_app/config/initializers/wrap_parameters.rb
336
+ - spec/dummy_rails_app/config/locales/en.yml
337
+ - spec/dummy_rails_app/config/routes.rb
338
+ - spec/dummy_rails_app/db/schema.rb
339
+ - spec/dummy_rails_app/db/seeds.rb
340
+ - spec/dummy_rails_app/doc/README_FOR_APP
341
+ - spec/dummy_rails_app/lib/assets/.gitkeep
342
+ - spec/dummy_rails_app/lib/tasks/.gitkeep
343
+ - spec/dummy_rails_app/lib/tasks/cucumber.rake
344
+ - spec/dummy_rails_app/public/404.html
345
+ - spec/dummy_rails_app/public/422.html
346
+ - spec/dummy_rails_app/public/500.html
347
+ - spec/dummy_rails_app/public/favicon.ico
348
+ - spec/dummy_rails_app/public/robots.txt
349
+ - spec/dummy_rails_app/script/cucumber
350
+ - spec/dummy_rails_app/script/rails
351
+ - spec/dummy_rails_app/vendor/assets/stylesheets/.gitkeep
352
+ - spec/dummy_rails_app/vendor/plugins/.gitkeep
353
+ - spec/factories/posts.rb
354
+ - spec/fixtures/gist_404
355
+ - spec/fixtures/gist_with_1_code_example
356
+ - spec/helpers/posts_helper_spec.rb
357
+ - spec/lib/mist/code_example_parser_spec.rb
358
+ - spec/lib/mist/configuration_spec.rb
359
+ - spec/lib/mist/permalink_spec.rb
360
+ - spec/lib/mist/repository_spec.rb
361
+ - spec/models/mist/git_model_spec.rb
362
+ - spec/models/mist/post_spec.rb
363
+ - spec/requests/posts_caching_spec.rb
364
+ - spec/spec_helper.rb
365
+ - spec/support/cache_helpers.rb
366
+ - spec/support/config.rb
367
+ - spec/support/fakeweb.rb
368
+ - spec/views/mist/posts/edit.html.erb_spec.rb
369
+ - spec/views/mist/posts/index.html.erb_spec.rb
370
+ - spec/views/mist/posts/new.html.erb_spec.rb
371
+ - spec/views/mist/posts/show.html.erb_spec.rb