mist 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
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