schreihals 0.0.3 → 0.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|