schreihals 0.0.3 → 0.0.4
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +1 -1
- data/.rspec +1 -0
- data/.travis.yml +9 -0
- data/.watchr +6 -5
- data/LICENSE +2 -2
- data/README.md +2 -54
- data/Rakefile +4 -9
- data/lib/schreihals.rb +10 -9
- data/lib/schreihals/actions/admin.rb +49 -0
- data/lib/schreihals/actions/auth.rb +29 -0
- data/lib/schreihals/actions/blog.rb +68 -0
- data/lib/schreihals/app.rb +15 -43
- data/lib/schreihals/cli.rb +0 -14
- data/lib/schreihals/helpers.rb +38 -5
- data/lib/schreihals/post.rb +126 -44
- data/lib/schreihals/rake.rb +21 -0
- data/lib/schreihals/version.rb +1 -1
- data/lib/templates/new_blog/Gemfile +17 -1
- data/lib/templates/new_blog/Rakefile +2 -0
- data/lib/templates/new_blog/app.rb.tt +28 -0
- data/lib/templates/new_blog/config.ru.tt +2 -14
- data/{example/public/media → lib/templates/new_blog/public}/.gitkeep +0 -0
- data/lib/views/admin/admin.haml +12 -0
- data/lib/views/admin/edit.haml +3 -0
- data/lib/views/admin/new.haml +3 -0
- data/lib/views/atom.haml +12 -10
- data/lib/views/index.haml +3 -0
- data/lib/views/layout.haml +4 -3
- data/lib/views/partials/_admin_post_list.haml +11 -0
- data/lib/views/partials/_form_field.haml +27 -0
- data/lib/views/partials/_post.haml +16 -12
- data/lib/views/partials/_post_form.haml +12 -0
- data/lib/views/schreihals.scss +61 -25
- data/schreihals.gemspec +27 -11
- data/spec/app_spec.rb +56 -0
- data/spec/factories.rb +15 -0
- data/spec/post_spec.rb +60 -0
- data/spec/spec_helper.rb +35 -0
- data/{test → test.old}/app_test.rb +0 -0
- data/{test → test.old}/files/simple_document.md +0 -0
- data/test.old/post_test.rb +62 -0
- data/{test → test.old}/posts/2011-12-23-first-post.md +0 -0
- data/{test → test.old}/posts/2011-12-24-second-post.md +0 -0
- data/{test → test.old}/posts/static-page.md +0 -0
- data/{test → test.old}/test_helper.rb +0 -0
- metadata +158 -87
- data/example/Gemfile +0 -5
- data/example/config.ru +0 -8
- data/example/posts/2010-06-17-pythton-is-great.md +0 -9
- data/example/posts/2011-12-22-ruby-is-great.md +0 -16
- data/lib/schreihals/actions.rb +0 -45
- data/lib/schreihals/document.rb +0 -52
- data/lib/templates/first-post.md.tt +0 -1
- data/lib/templates/new-post.md.tt +0 -13
- data/lib/templates/new_blog/posts/.gitkeep +0 -0
- data/lib/templates/new_blog/public/media/.gitkeep +0 -0
- data/test/document_test.rb +0 -41
@@ -0,0 +1,12 @@
|
|
1
|
+
%form.post{ action: @post.new_record? ? '/admin/new' : "/admin/edit/#{@post.id}", method: 'post' }
|
2
|
+
= form_field @post, :title
|
3
|
+
= form_field @post, :link
|
4
|
+
= form_field @post, :body, type: :textarea
|
5
|
+
= form_field @post, :slug, label: 'URL Slug', extra: @post.previous_slugs.any? ? "Previous slugs: #{@post.previous_slugs.join ', '}" : nil
|
6
|
+
= form_field @post, :published_at
|
7
|
+
= form_field @post, :status, type: :dropdown, options: [[:draft, "Draft"], [:published, "Published"]]
|
8
|
+
= form_field @post, :summary
|
9
|
+
= form_field @post, :read_more, label: "'Read More' Link Text"
|
10
|
+
|
11
|
+
.buttons
|
12
|
+
%input{ type: 'submit', value: @post.new_record? ? 'Create Post' : 'Update Post' }
|
data/lib/views/schreihals.scss
CHANGED
@@ -1,51 +1,87 @@
|
|
1
1
|
// load stuff!
|
2
|
-
@import 'schnitzelstyle';
|
3
|
-
@import 'schnitzelstyle/coderay';
|
4
|
-
@import 'schnitzelstyle/export';
|
5
|
-
|
6
|
-
@include schnitzel-complete;
|
7
|
-
@include schnitzel-export;
|
2
|
+
@import 'schnitzelstyle/complete';
|
8
3
|
|
9
4
|
/* misc crap */
|
10
5
|
.social_media_buttons {
|
11
6
|
margin: 1em 0;
|
12
7
|
}
|
13
8
|
|
9
|
+
@mixin smallish {
|
10
|
+
font: $font-footer;
|
11
|
+
font-size: 80%;
|
12
|
+
color: lighten($color-text, 30%);
|
13
|
+
a {
|
14
|
+
color: lighten($color-text, 30%);
|
15
|
+
border: none;
|
16
|
+
}
|
17
|
+
a:hover {
|
18
|
+
text-decoration: underline;
|
19
|
+
}
|
20
|
+
}
|
21
|
+
|
14
22
|
/* posts */
|
15
23
|
article.post {
|
16
|
-
header {
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
24
|
+
&.draft header h1 { background-color: #ccc; }
|
25
|
+
&.link header {
|
26
|
+
font: $font-header;
|
27
|
+
font-weight: bold;
|
28
|
+
padding: 2px 10px;
|
29
|
+
background-color: darken($color-page-background, 5%);
|
30
|
+
display: inline-block;
|
31
|
+
line-height: 150%;
|
32
|
+
border-bottom: 2px solid $color-link-underline;
|
33
|
+
color: darken($color-page-background, 30%);
|
34
|
+
a {
|
35
|
+
border: none;
|
21
36
|
}
|
22
37
|
}
|
23
38
|
|
24
|
-
|
39
|
+
div.summary {
|
40
|
+
margin-bottom: 2em;
|
25
41
|
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
42
|
+
p {
|
43
|
+
font: $font-header;
|
44
|
+
font-size: 125%;
|
45
|
+
line-height: 150%;
|
46
|
+
color: #000;
|
31
47
|
|
32
|
-
|
33
|
-
|
48
|
+
@media only screen and (max-width: 640px) {
|
49
|
+
line-height: 130%;
|
34
50
|
|
35
|
-
|
36
|
-
|
51
|
+
section.posts & {
|
52
|
+
font-size: 100%;
|
53
|
+
}
|
37
54
|
}
|
38
55
|
}
|
39
56
|
}
|
40
57
|
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
58
|
+
footer {
|
59
|
+
margin-top: 0.5em;
|
60
|
+
|
61
|
+
p.permalink {
|
62
|
+
@include smallish;
|
45
63
|
}
|
46
64
|
}
|
47
65
|
}
|
48
66
|
|
67
|
+
/* admin post lists */
|
68
|
+
ul.admin-post-list {
|
69
|
+
max-height: 300px;
|
70
|
+
padding-bottom: 5px;
|
71
|
+
overflow: auto;
|
72
|
+
}
|
73
|
+
|
74
|
+
/* admin links */
|
75
|
+
ul.admin {
|
76
|
+
@include smallish;
|
77
|
+
list-style: none;
|
78
|
+
|
79
|
+
li {
|
80
|
+
display: inline;
|
81
|
+
margin-right: 0.5em;
|
82
|
+
}
|
83
|
+
}
|
84
|
+
|
49
85
|
/* disqus */
|
50
86
|
#dsq-content {
|
51
87
|
a {
|
data/schreihals.gemspec
CHANGED
@@ -15,25 +15,41 @@ Gem::Specification.new do |gem|
|
|
15
15
|
gem.require_paths = ["lib"]
|
16
16
|
gem.version = Schreihals::VERSION
|
17
17
|
|
18
|
+
# base dependencies
|
18
19
|
gem.add_dependency 'rack', '~> 1.4.0'
|
19
20
|
gem.add_dependency 'sinatra', '~> 1.3.2'
|
20
|
-
gem.add_dependency 'activesupport', '~> 3.
|
21
|
-
gem.add_dependency '
|
21
|
+
gem.add_dependency 'activesupport', '~> 3.2.0'
|
22
|
+
gem.add_dependency 'rack-cache'
|
23
|
+
|
24
|
+
# database related
|
25
|
+
gem.add_dependency 'mongoid', '~> 2.4'
|
26
|
+
gem.add_dependency 'bson_ext', '~> 1.5'
|
27
|
+
|
28
|
+
# authentication
|
29
|
+
gem.add_dependency 'omniauth'
|
30
|
+
gem.add_dependency 'omniauth-browserid'
|
31
|
+
|
32
|
+
# frontend/views/assets related
|
22
33
|
gem.add_dependency 'haml'
|
23
34
|
gem.add_dependency 'sass'
|
24
|
-
gem.add_dependency 'coderay'
|
25
35
|
gem.add_dependency 'redcarpet'
|
26
|
-
gem.add_dependency '
|
27
|
-
gem.add_dependency '
|
28
|
-
gem.add_dependency 'schnitzelstyle', '~> 0.0.2'
|
29
|
-
gem.add_dependency 'nokogiri'
|
30
|
-
gem.add_dependency 'thor'
|
31
|
-
gem.add_dependency 'psych'
|
36
|
+
gem.add_dependency 'coderay'
|
37
|
+
gem.add_dependency 'schnitzelstyle', '~> 0.0.4'
|
32
38
|
gem.add_dependency 'i18n'
|
33
39
|
gem.add_dependency 'tilt', '~> 1.3.0'
|
34
40
|
|
35
|
-
|
36
|
-
gem.
|
41
|
+
# CLI related
|
42
|
+
gem.add_dependency 'thor'
|
43
|
+
gem.add_dependency 'rake'
|
44
|
+
gem.add_dependency 'wirble'
|
45
|
+
|
46
|
+
# development dependencies
|
47
|
+
gem.add_development_dependency 'rspec', '>= 2.8.0'
|
48
|
+
gem.add_development_dependency 'rspec-html-matchers'
|
49
|
+
gem.add_development_dependency 'database_cleaner'
|
50
|
+
gem.add_development_dependency 'factory_girl'
|
51
|
+
gem.add_development_dependency 'timecop'
|
52
|
+
gem.add_development_dependency 'shotgun'
|
37
53
|
gem.add_development_dependency 'rack-test'
|
38
54
|
gem.add_development_dependency 'watchr'
|
39
55
|
gem.add_development_dependency 'awesome_print'
|
data/spec/app_spec.rb
ADDED
@@ -0,0 +1,56 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
class TestApp < Schreihals::App
|
4
|
+
configure do
|
5
|
+
set :blog_title, "A Test Blog"
|
6
|
+
end
|
7
|
+
end
|
8
|
+
|
9
|
+
describe Schreihals::App do
|
10
|
+
include Rack::Test::Methods
|
11
|
+
|
12
|
+
def app
|
13
|
+
TestApp
|
14
|
+
end
|
15
|
+
|
16
|
+
describe 'the home page' do
|
17
|
+
before do
|
18
|
+
2.times { Factory(:draft_post) }
|
19
|
+
5.times { Factory(:published_post) }
|
20
|
+
get '/'
|
21
|
+
end
|
22
|
+
|
23
|
+
subject { last_response }
|
24
|
+
|
25
|
+
it { should be_ok }
|
26
|
+
its(:body) { should have_tag 'title', text: "A Test Blog" }
|
27
|
+
its(:body) { should have_tag 'section.posts > article.post.published', count: 5 }
|
28
|
+
its(:body) { should_not have_tag 'section.posts > article.post.draft' }
|
29
|
+
end
|
30
|
+
|
31
|
+
describe 'the public feed url' do
|
32
|
+
before do
|
33
|
+
TestApp.set :feed_url, 'http://feeds.feedburner.com/example_org'
|
34
|
+
get '/feed'
|
35
|
+
end
|
36
|
+
|
37
|
+
subject { last_response }
|
38
|
+
it { should be_redirect }
|
39
|
+
its(:status) { should == 302 }
|
40
|
+
specify { subject["Location"].should == 'http://feeds.feedburner.com/example_org' }
|
41
|
+
end
|
42
|
+
|
43
|
+
describe 'viewing a single post' do
|
44
|
+
context 'when the post has multiple slugs' do
|
45
|
+
before do
|
46
|
+
@post = Factory(:post, slugs: ['ancient-slug', 'old-slug', 'current-slug'])
|
47
|
+
end
|
48
|
+
|
49
|
+
it 'should enforce the canonical URL' do
|
50
|
+
get "/#{@post.year}/#{@post.month}/#{@post.day}/ancient-slug/"
|
51
|
+
last_response.should be_redirect
|
52
|
+
last_response["Location"].should == "http://example.org/#{@post.year}/#{@post.month}/#{@post.day}/current-slug/"
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
data/spec/factories.rb
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
FactoryGirl.define do
|
2
|
+
factory :post, class: Schreihals::Post do
|
3
|
+
title "It's a Post!"
|
4
|
+
body "Hello world.\n\nI'm a really interesting post!"
|
5
|
+
published_at "2012-01-02 12:23:13"
|
6
|
+
end
|
7
|
+
|
8
|
+
factory :published_post, parent: :post do
|
9
|
+
status :published
|
10
|
+
end
|
11
|
+
|
12
|
+
factory :draft_post, parent: :post do
|
13
|
+
status :draft
|
14
|
+
end
|
15
|
+
end
|
data/spec/post_spec.rb
ADDED
@@ -0,0 +1,60 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Schreihals::Post do
|
4
|
+
subject do
|
5
|
+
Factory.build(:post)
|
6
|
+
end
|
7
|
+
|
8
|
+
context 'slugs' do
|
9
|
+
before do
|
10
|
+
subject.slugs = ['some-slug', 'another-slug']
|
11
|
+
subject.slug = 'a-new-slug'
|
12
|
+
end
|
13
|
+
|
14
|
+
its(:slugs) { should == ['some-slug', 'another-slug', 'a-new-slug'] }
|
15
|
+
its(:slug) { should == 'a-new-slug'}
|
16
|
+
end
|
17
|
+
|
18
|
+
context 'saving' do
|
19
|
+
context "when no slug is set" do
|
20
|
+
before { subject.slug = nil }
|
21
|
+
it "should set its slug to a sluggified version of its title" do
|
22
|
+
expect { subject.save }.to change(subject, :slug).from(nil).to('it-s-a-post')
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
context "when post is being pubslihed and no published_at is set" do
|
27
|
+
before { subject.published_at = nil ; subject.status = :published }
|
28
|
+
it "should set its published_at to the current time" do
|
29
|
+
expect { subject.save }.to change(subject, :published_at).from(nil).to(Time.now)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
it "should store blank attributes as nil" do
|
34
|
+
subject.link = ""
|
35
|
+
expect { subject.save }.to change(subject, :link).from("").to(nil)
|
36
|
+
end
|
37
|
+
|
38
|
+
it "should remove leading and trailing spaces from string attributes" do
|
39
|
+
subject.link = " moo "
|
40
|
+
subject.link.should == " moo "
|
41
|
+
subject.save
|
42
|
+
subject.link.should == "moo"
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
describe '.latest' do
|
47
|
+
it 'should return the latest published posts' do
|
48
|
+
2.times { Factory :draft_post }
|
49
|
+
5.times { Factory :published_post }
|
50
|
+
Schreihals::Post.latest.size.should == 5
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
context 'date methods' do
|
55
|
+
before { subject.published_at = "2012-01-02 12:23:13" }
|
56
|
+
its(:year) { should == 2012 }
|
57
|
+
its(:month) { should == 01 }
|
58
|
+
its(:day) { should == 02 }
|
59
|
+
end
|
60
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,35 @@
|
|
1
|
+
SPEC_DIR = File.dirname(__FILE__)
|
2
|
+
lib_path = File.expand_path("#{SPEC_DIR}/../lib")
|
3
|
+
$LOAD_PATH.unshift lib_path unless $LOAD_PATH.include?(lib_path)
|
4
|
+
|
5
|
+
require 'rubygems'
|
6
|
+
require 'bundler/setup'
|
7
|
+
|
8
|
+
require 'schreihals'
|
9
|
+
|
10
|
+
Schreihals.mongo_uri = 'mongodb://localhost/_schreihals_test'
|
11
|
+
|
12
|
+
require 'awesome_print'
|
13
|
+
require 'rack/test'
|
14
|
+
require 'rspec-html-matchers'
|
15
|
+
require 'database_cleaner'
|
16
|
+
require 'factory_girl'
|
17
|
+
require File.expand_path("../factories.rb", __FILE__)
|
18
|
+
require 'timecop'
|
19
|
+
Timecop.freeze
|
20
|
+
|
21
|
+
set :environment, :test
|
22
|
+
|
23
|
+
RSpec.configure do |config|
|
24
|
+
config.before(:suite) do
|
25
|
+
DatabaseCleaner[:mongoid].strategy = :truncation
|
26
|
+
end
|
27
|
+
|
28
|
+
config.before(:each) do
|
29
|
+
DatabaseCleaner[:mongoid].start
|
30
|
+
end
|
31
|
+
|
32
|
+
config.after(:each) do
|
33
|
+
DatabaseCleaner[:mongoid].clean
|
34
|
+
end
|
35
|
+
end
|
File without changes
|
File without changes
|
@@ -0,0 +1,62 @@
|
|
1
|
+
require_relative 'test_helper'
|
2
|
+
|
3
|
+
context Schreihals::Post do
|
4
|
+
# setup { Rack::MockRequest.new(MyTestApp.new) }
|
5
|
+
|
6
|
+
# context "when loading the home page" do
|
7
|
+
# setup { topic.get '/' }
|
8
|
+
|
9
|
+
# asserts(:status).equals 200
|
10
|
+
# asserts(:body).present
|
11
|
+
# asserts(:content_type).equals 'text/html;charset=utf-8'
|
12
|
+
# asserts(:body).includes_elements("section.posts article.post", 2)
|
13
|
+
|
14
|
+
# asserts(:body).includes_html('title' => MyTestApp.settings.blog_title)
|
15
|
+
# asserts(:body).includes_html('.container>footer' => MyTestApp.settings.footer)
|
16
|
+
# end
|
17
|
+
|
18
|
+
# context "when loading a specific post's page" do
|
19
|
+
# setup { topic.get '/2011/12/23/first-post/' }
|
20
|
+
|
21
|
+
# asserts(:status).equals 200
|
22
|
+
# asserts(:body).present
|
23
|
+
# asserts(:content_type).equals 'text/html;charset=utf-8'
|
24
|
+
# asserts(:body).includes_elements("article.post", 1)
|
25
|
+
# asserts(:body).includes_html('article.post header h2 a' => "First Post\.")
|
26
|
+
# end
|
27
|
+
|
28
|
+
# context "when loading a static page" do
|
29
|
+
# setup { topic.get '/static-page/' }
|
30
|
+
|
31
|
+
# asserts(:status).equals 200
|
32
|
+
# asserts(:body).present
|
33
|
+
# asserts(:content_type).equals 'text/html;charset=utf-8'
|
34
|
+
# asserts(:body).includes_elements("article.post", 1)
|
35
|
+
# asserts(:body).includes_html('article.post header h2 a' => "A Static Page\.")
|
36
|
+
# end
|
37
|
+
|
38
|
+
# context "when loading the ATOM feed" do
|
39
|
+
# setup { topic.get '/atom.xml' }
|
40
|
+
|
41
|
+
# asserts(:status).equals 200
|
42
|
+
# asserts(:body).present
|
43
|
+
# asserts(:content_type).equals 'application/xml+atom'
|
44
|
+
# asserts(:body).includes_elements("entry", 2)
|
45
|
+
# end
|
46
|
+
|
47
|
+
# context "when loading a static asset provided by schreihals" do
|
48
|
+
# setup { topic.get '/favicon.ico' }
|
49
|
+
|
50
|
+
# asserts(:status).equals 200
|
51
|
+
# asserts(:body).present
|
52
|
+
# asserts(:content_type).equals 'image/vnd.microsoft.icon'
|
53
|
+
# end
|
54
|
+
|
55
|
+
# context "when loading an invalid URL" do
|
56
|
+
# setup { topic.get '/ooga/booga/foo/to/the/bar' }
|
57
|
+
|
58
|
+
# asserts(:status).equals 404
|
59
|
+
# asserts(:body).present
|
60
|
+
# asserts(:content_type).equals 'text/html;charset=utf-8'
|
61
|
+
# end
|
62
|
+
end
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: schreihals
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-02-18 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rack
|
16
|
-
requirement: &
|
16
|
+
requirement: &70180323564280 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: 1.4.0
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70180323564280
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: sinatra
|
27
|
-
requirement: &
|
27
|
+
requirement: &70180323547200 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ~>
|
@@ -32,21 +32,21 @@ dependencies:
|
|
32
32
|
version: 1.3.2
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70180323547200
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: activesupport
|
38
|
-
requirement: &
|
38
|
+
requirement: &70180323545120 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ~>
|
42
42
|
- !ruby/object:Gem::Version
|
43
|
-
version: 3.
|
43
|
+
version: 3.2.0
|
44
44
|
type: :runtime
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70180323545120
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
|
-
name:
|
49
|
-
requirement: &
|
48
|
+
name: rack-cache
|
49
|
+
requirement: &70180323541900 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,10 +54,32 @@ dependencies:
|
|
54
54
|
version: '0'
|
55
55
|
type: :runtime
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *70180323541900
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
|
-
name:
|
60
|
-
requirement: &
|
59
|
+
name: mongoid
|
60
|
+
requirement: &70180323515600 !ruby/object:Gem::Requirement
|
61
|
+
none: false
|
62
|
+
requirements:
|
63
|
+
- - ~>
|
64
|
+
- !ruby/object:Gem::Version
|
65
|
+
version: '2.4'
|
66
|
+
type: :runtime
|
67
|
+
prerelease: false
|
68
|
+
version_requirements: *70180323515600
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: bson_ext
|
71
|
+
requirement: &70180323513800 !ruby/object:Gem::Requirement
|
72
|
+
none: false
|
73
|
+
requirements:
|
74
|
+
- - ~>
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: '1.5'
|
77
|
+
type: :runtime
|
78
|
+
prerelease: false
|
79
|
+
version_requirements: *70180323513800
|
80
|
+
- !ruby/object:Gem::Dependency
|
81
|
+
name: omniauth
|
82
|
+
requirement: &70180323510180 !ruby/object:Gem::Requirement
|
61
83
|
none: false
|
62
84
|
requirements:
|
63
85
|
- - ! '>='
|
@@ -65,10 +87,10 @@ dependencies:
|
|
65
87
|
version: '0'
|
66
88
|
type: :runtime
|
67
89
|
prerelease: false
|
68
|
-
version_requirements: *
|
90
|
+
version_requirements: *70180323510180
|
69
91
|
- !ruby/object:Gem::Dependency
|
70
|
-
name:
|
71
|
-
requirement: &
|
92
|
+
name: omniauth-browserid
|
93
|
+
requirement: &70180323509500 !ruby/object:Gem::Requirement
|
72
94
|
none: false
|
73
95
|
requirements:
|
74
96
|
- - ! '>='
|
@@ -76,10 +98,10 @@ dependencies:
|
|
76
98
|
version: '0'
|
77
99
|
type: :runtime
|
78
100
|
prerelease: false
|
79
|
-
version_requirements: *
|
101
|
+
version_requirements: *70180323509500
|
80
102
|
- !ruby/object:Gem::Dependency
|
81
|
-
name:
|
82
|
-
requirement: &
|
103
|
+
name: haml
|
104
|
+
requirement: &70180323494380 !ruby/object:Gem::Requirement
|
83
105
|
none: false
|
84
106
|
requirements:
|
85
107
|
- - ! '>='
|
@@ -87,10 +109,10 @@ dependencies:
|
|
87
109
|
version: '0'
|
88
110
|
type: :runtime
|
89
111
|
prerelease: false
|
90
|
-
version_requirements: *
|
112
|
+
version_requirements: *70180323494380
|
91
113
|
- !ruby/object:Gem::Dependency
|
92
|
-
name:
|
93
|
-
requirement: &
|
114
|
+
name: sass
|
115
|
+
requirement: &70180323492400 !ruby/object:Gem::Requirement
|
94
116
|
none: false
|
95
117
|
requirements:
|
96
118
|
- - ! '>='
|
@@ -98,10 +120,10 @@ dependencies:
|
|
98
120
|
version: '0'
|
99
121
|
type: :runtime
|
100
122
|
prerelease: false
|
101
|
-
version_requirements: *
|
123
|
+
version_requirements: *70180323492400
|
102
124
|
- !ruby/object:Gem::Dependency
|
103
|
-
name:
|
104
|
-
requirement: &
|
125
|
+
name: redcarpet
|
126
|
+
requirement: &70180323491060 !ruby/object:Gem::Requirement
|
105
127
|
none: false
|
106
128
|
requirements:
|
107
129
|
- - ! '>='
|
@@ -109,10 +131,10 @@ dependencies:
|
|
109
131
|
version: '0'
|
110
132
|
type: :runtime
|
111
133
|
prerelease: false
|
112
|
-
version_requirements: *
|
134
|
+
version_requirements: *70180323491060
|
113
135
|
- !ruby/object:Gem::Dependency
|
114
|
-
name:
|
115
|
-
requirement: &
|
136
|
+
name: coderay
|
137
|
+
requirement: &70180323489280 !ruby/object:Gem::Requirement
|
116
138
|
none: false
|
117
139
|
requirements:
|
118
140
|
- - ! '>='
|
@@ -120,21 +142,21 @@ dependencies:
|
|
120
142
|
version: '0'
|
121
143
|
type: :runtime
|
122
144
|
prerelease: false
|
123
|
-
version_requirements: *
|
145
|
+
version_requirements: *70180323489280
|
124
146
|
- !ruby/object:Gem::Dependency
|
125
147
|
name: schnitzelstyle
|
126
|
-
requirement: &
|
148
|
+
requirement: &70180323488540 !ruby/object:Gem::Requirement
|
127
149
|
none: false
|
128
150
|
requirements:
|
129
151
|
- - ~>
|
130
152
|
- !ruby/object:Gem::Version
|
131
|
-
version: 0.0.
|
153
|
+
version: 0.0.4
|
132
154
|
type: :runtime
|
133
155
|
prerelease: false
|
134
|
-
version_requirements: *
|
156
|
+
version_requirements: *70180323488540
|
135
157
|
- !ruby/object:Gem::Dependency
|
136
|
-
name:
|
137
|
-
requirement: &
|
158
|
+
name: i18n
|
159
|
+
requirement: &70180323487860 !ruby/object:Gem::Requirement
|
138
160
|
none: false
|
139
161
|
requirements:
|
140
162
|
- - ! '>='
|
@@ -142,10 +164,21 @@ dependencies:
|
|
142
164
|
version: '0'
|
143
165
|
type: :runtime
|
144
166
|
prerelease: false
|
145
|
-
version_requirements: *
|
167
|
+
version_requirements: *70180323487860
|
168
|
+
- !ruby/object:Gem::Dependency
|
169
|
+
name: tilt
|
170
|
+
requirement: &70180323475360 !ruby/object:Gem::Requirement
|
171
|
+
none: false
|
172
|
+
requirements:
|
173
|
+
- - ~>
|
174
|
+
- !ruby/object:Gem::Version
|
175
|
+
version: 1.3.0
|
176
|
+
type: :runtime
|
177
|
+
prerelease: false
|
178
|
+
version_requirements: *70180323475360
|
146
179
|
- !ruby/object:Gem::Dependency
|
147
180
|
name: thor
|
148
|
-
requirement: &
|
181
|
+
requirement: &70180323474060 !ruby/object:Gem::Requirement
|
149
182
|
none: false
|
150
183
|
requirements:
|
151
184
|
- - ! '>='
|
@@ -153,10 +186,10 @@ dependencies:
|
|
153
186
|
version: '0'
|
154
187
|
type: :runtime
|
155
188
|
prerelease: false
|
156
|
-
version_requirements: *
|
189
|
+
version_requirements: *70180323474060
|
157
190
|
- !ruby/object:Gem::Dependency
|
158
|
-
name:
|
159
|
-
requirement: &
|
191
|
+
name: rake
|
192
|
+
requirement: &70180323473500 !ruby/object:Gem::Requirement
|
160
193
|
none: false
|
161
194
|
requirements:
|
162
195
|
- - ! '>='
|
@@ -164,10 +197,10 @@ dependencies:
|
|
164
197
|
version: '0'
|
165
198
|
type: :runtime
|
166
199
|
prerelease: false
|
167
|
-
version_requirements: *
|
200
|
+
version_requirements: *70180323473500
|
168
201
|
- !ruby/object:Gem::Dependency
|
169
|
-
name:
|
170
|
-
requirement: &
|
202
|
+
name: wirble
|
203
|
+
requirement: &70180323472740 !ruby/object:Gem::Requirement
|
171
204
|
none: false
|
172
205
|
requirements:
|
173
206
|
- - ! '>='
|
@@ -175,21 +208,32 @@ dependencies:
|
|
175
208
|
version: '0'
|
176
209
|
type: :runtime
|
177
210
|
prerelease: false
|
178
|
-
version_requirements: *
|
211
|
+
version_requirements: *70180323472740
|
179
212
|
- !ruby/object:Gem::Dependency
|
180
|
-
name:
|
181
|
-
requirement: &
|
213
|
+
name: rspec
|
214
|
+
requirement: &70180323471820 !ruby/object:Gem::Requirement
|
182
215
|
none: false
|
183
216
|
requirements:
|
184
|
-
- -
|
217
|
+
- - ! '>='
|
185
218
|
- !ruby/object:Gem::Version
|
186
|
-
version:
|
187
|
-
type: :
|
219
|
+
version: 2.8.0
|
220
|
+
type: :development
|
188
221
|
prerelease: false
|
189
|
-
version_requirements: *
|
222
|
+
version_requirements: *70180323471820
|
190
223
|
- !ruby/object:Gem::Dependency
|
191
|
-
name:
|
192
|
-
requirement: &
|
224
|
+
name: rspec-html-matchers
|
225
|
+
requirement: &70180323471020 !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: *70180323471020
|
234
|
+
- !ruby/object:Gem::Dependency
|
235
|
+
name: database_cleaner
|
236
|
+
requirement: &70180323469980 !ruby/object:Gem::Requirement
|
193
237
|
none: false
|
194
238
|
requirements:
|
195
239
|
- - ! '>='
|
@@ -197,10 +241,32 @@ dependencies:
|
|
197
241
|
version: '0'
|
198
242
|
type: :development
|
199
243
|
prerelease: false
|
200
|
-
version_requirements: *
|
244
|
+
version_requirements: *70180323469980
|
201
245
|
- !ruby/object:Gem::Dependency
|
202
|
-
name:
|
203
|
-
requirement: &
|
246
|
+
name: factory_girl
|
247
|
+
requirement: &70180323469060 !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: *70180323469060
|
256
|
+
- !ruby/object:Gem::Dependency
|
257
|
+
name: timecop
|
258
|
+
requirement: &70180323468560 !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: *70180323468560
|
267
|
+
- !ruby/object:Gem::Dependency
|
268
|
+
name: shotgun
|
269
|
+
requirement: &70180323467960 !ruby/object:Gem::Requirement
|
204
270
|
none: false
|
205
271
|
requirements:
|
206
272
|
- - ! '>='
|
@@ -208,10 +274,10 @@ dependencies:
|
|
208
274
|
version: '0'
|
209
275
|
type: :development
|
210
276
|
prerelease: false
|
211
|
-
version_requirements: *
|
277
|
+
version_requirements: *70180323467960
|
212
278
|
- !ruby/object:Gem::Dependency
|
213
279
|
name: rack-test
|
214
|
-
requirement: &
|
280
|
+
requirement: &70180323466920 !ruby/object:Gem::Requirement
|
215
281
|
none: false
|
216
282
|
requirements:
|
217
283
|
- - ! '>='
|
@@ -219,10 +285,10 @@ dependencies:
|
|
219
285
|
version: '0'
|
220
286
|
type: :development
|
221
287
|
prerelease: false
|
222
|
-
version_requirements: *
|
288
|
+
version_requirements: *70180323466920
|
223
289
|
- !ruby/object:Gem::Dependency
|
224
290
|
name: watchr
|
225
|
-
requirement: &
|
291
|
+
requirement: &70180323465320 !ruby/object:Gem::Requirement
|
226
292
|
none: false
|
227
293
|
requirements:
|
228
294
|
- - ! '>='
|
@@ -230,10 +296,10 @@ dependencies:
|
|
230
296
|
version: '0'
|
231
297
|
type: :development
|
232
298
|
prerelease: false
|
233
|
-
version_requirements: *
|
299
|
+
version_requirements: *70180323465320
|
234
300
|
- !ruby/object:Gem::Dependency
|
235
301
|
name: awesome_print
|
236
|
-
requirement: &
|
302
|
+
requirement: &70180323464460 !ruby/object:Gem::Requirement
|
237
303
|
none: false
|
238
304
|
requirements:
|
239
305
|
- - ! '>='
|
@@ -241,7 +307,7 @@ dependencies:
|
|
241
307
|
version: '0'
|
242
308
|
type: :development
|
243
309
|
prerelease: false
|
244
|
-
version_requirements: *
|
310
|
+
version_requirements: *70180323464460
|
245
311
|
description: A simple blog engine for hackers.
|
246
312
|
email:
|
247
313
|
- hendrik@mans.de
|
@@ -251,54 +317,62 @@ extensions: []
|
|
251
317
|
extra_rdoc_files: []
|
252
318
|
files:
|
253
319
|
- .gitignore
|
320
|
+
- .rspec
|
321
|
+
- .travis.yml
|
254
322
|
- .watchr
|
255
323
|
- Gemfile
|
256
324
|
- LICENSE
|
257
325
|
- README.md
|
258
326
|
- Rakefile
|
259
327
|
- bin/schreihals
|
260
|
-
- example/Gemfile
|
261
|
-
- example/config.ru
|
262
|
-
- example/posts/2010-06-17-pythton-is-great.md
|
263
|
-
- example/posts/2011-12-22-ruby-is-great.md
|
264
|
-
- example/public/media/.gitkeep
|
265
328
|
- lib/public/.gitkeep
|
266
329
|
- lib/public/favicon.ico
|
267
330
|
- lib/schreihals.rb
|
268
|
-
- lib/schreihals/actions.rb
|
331
|
+
- lib/schreihals/actions/admin.rb
|
332
|
+
- lib/schreihals/actions/auth.rb
|
333
|
+
- lib/schreihals/actions/blog.rb
|
269
334
|
- lib/schreihals/app.rb
|
270
335
|
- lib/schreihals/cli.rb
|
271
|
-
- lib/schreihals/document.rb
|
272
336
|
- lib/schreihals/helpers.rb
|
273
337
|
- lib/schreihals/post.rb
|
338
|
+
- lib/schreihals/rake.rb
|
274
339
|
- lib/schreihals/static.rb
|
275
340
|
- lib/schreihals/version.rb
|
276
|
-
- lib/templates/first-post.md.tt
|
277
|
-
- lib/templates/new-post.md.tt
|
278
341
|
- lib/templates/new_blog/.gitignore
|
279
342
|
- lib/templates/new_blog/Gemfile
|
343
|
+
- lib/templates/new_blog/Rakefile
|
344
|
+
- lib/templates/new_blog/app.rb.tt
|
280
345
|
- lib/templates/new_blog/config.ru.tt
|
281
|
-
- lib/templates/new_blog/
|
282
|
-
- lib/templates/new_blog/public/media/.gitkeep
|
346
|
+
- lib/templates/new_blog/public/.gitkeep
|
283
347
|
- lib/views/404.haml
|
348
|
+
- lib/views/admin/admin.haml
|
349
|
+
- lib/views/admin/edit.haml
|
350
|
+
- lib/views/admin/new.haml
|
284
351
|
- lib/views/atom.haml
|
285
352
|
- lib/views/blog.scss
|
286
353
|
- lib/views/index.haml
|
287
354
|
- lib/views/layout.haml
|
355
|
+
- lib/views/partials/_admin_post_list.haml
|
288
356
|
- lib/views/partials/_disqus.haml
|
357
|
+
- lib/views/partials/_form_field.haml
|
289
358
|
- lib/views/partials/_gauges.haml
|
290
359
|
- lib/views/partials/_google_analytics.haml
|
291
360
|
- lib/views/partials/_post.haml
|
361
|
+
- lib/views/partials/_post_form.haml
|
292
362
|
- lib/views/post.haml
|
293
363
|
- lib/views/schreihals.scss
|
294
364
|
- schreihals.gemspec
|
295
|
-
-
|
296
|
-
-
|
297
|
-
-
|
298
|
-
-
|
299
|
-
- test/
|
300
|
-
- test/
|
301
|
-
- test/
|
365
|
+
- spec/app_spec.rb
|
366
|
+
- spec/factories.rb
|
367
|
+
- spec/post_spec.rb
|
368
|
+
- spec/spec_helper.rb
|
369
|
+
- test.old/app_test.rb
|
370
|
+
- test.old/files/simple_document.md
|
371
|
+
- test.old/post_test.rb
|
372
|
+
- test.old/posts/2011-12-23-first-post.md
|
373
|
+
- test.old/posts/2011-12-24-second-post.md
|
374
|
+
- test.old/posts/static-page.md
|
375
|
+
- test.old/test_helper.rb
|
302
376
|
homepage: http://hmans.net
|
303
377
|
licenses: []
|
304
378
|
post_install_message:
|
@@ -324,10 +398,7 @@ signing_key:
|
|
324
398
|
specification_version: 3
|
325
399
|
summary: A simple blog engine for hackers.
|
326
400
|
test_files:
|
327
|
-
-
|
328
|
-
-
|
329
|
-
-
|
330
|
-
-
|
331
|
-
- test/posts/2011-12-24-second-post.md
|
332
|
-
- test/posts/static-page.md
|
333
|
-
- test/test_helper.rb
|
401
|
+
- spec/app_spec.rb
|
402
|
+
- spec/factories.rb
|
403
|
+
- spec/post_spec.rb
|
404
|
+
- spec/spec_helper.rb
|