schnitzelpress 0.0.11 → 0.0.12
Sign up to get free protection for your applications and to get access to all the features.
- data/.travis.yml +1 -0
- data/lib/schnitzelpress/actions/blog.rb +3 -3
- data/lib/schnitzelpress/helpers.rb +5 -5
- data/lib/schnitzelpress/post.rb +20 -20
- data/lib/schnitzelpress/version.rb +1 -1
- data/lib/schnitzelpress.rb +1 -1
- data/lib/views/admin/admin.haml +5 -5
- data/lib/views/admin/edit.haml +1 -1
- data/lib/views/admin/new.haml +1 -1
- data/lib/views/atom.haml +5 -5
- data/lib/views/index.haml +1 -1
- data/lib/views/layout.haml +8 -8
- data/lib/views/login.haml +3 -3
- data/lib/views/partials/_admin_post_list.haml +2 -2
- data/lib/views/partials/_form_field.haml +8 -8
- data/lib/views/partials/_post.haml +6 -6
- data/lib/views/partials/_post_form.haml +11 -11
- data/lib/views/post.haml +1 -1
- data/spec/app_spec.rb +3 -3
- data/spec/factories.rb +6 -6
- data/spec/post_spec.rb +2 -2
- metadata +63 -63
data/.travis.yml
CHANGED
@@ -6,7 +6,7 @@ module SchnitzelPress
|
|
6
6
|
included do
|
7
7
|
get '/' do
|
8
8
|
@show_description = true
|
9
|
-
if @post = Post.published.pages.where(slugs
|
9
|
+
if @post = Post.published.pages.where(:slugs => 'home').first
|
10
10
|
render_post
|
11
11
|
else
|
12
12
|
render_blog
|
@@ -65,14 +65,14 @@ module SchnitzelPress
|
|
65
65
|
get '/:year/:month/:day/:slug/?' do |year, month, day, slug|
|
66
66
|
@post = Post.
|
67
67
|
for_day(year.to_i, month.to_i, day.to_i).
|
68
|
-
where(slugs
|
68
|
+
where(:slugs => slug).first
|
69
69
|
|
70
70
|
render_post
|
71
71
|
end
|
72
72
|
|
73
73
|
get '/*/?' do
|
74
74
|
slug = params[:splat].first
|
75
|
-
@post = Post.where(slugs
|
75
|
+
@post = Post.where(:slugs => slug).first
|
76
76
|
render_post
|
77
77
|
end
|
78
78
|
|
@@ -49,10 +49,10 @@ module SchnitzelPress
|
|
49
49
|
|
50
50
|
def form_field(object, attribute, options = {})
|
51
51
|
options = {
|
52
|
-
label
|
53
|
-
value
|
54
|
-
errors
|
55
|
-
class_name
|
52
|
+
:label => attribute.to_s.humanize,
|
53
|
+
:value => object.send(attribute),
|
54
|
+
:errors => object.errors[attribute.to_sym],
|
55
|
+
:class_name => object.class.to_s.demodulize.underscore
|
56
56
|
}.merge(options)
|
57
57
|
|
58
58
|
options[:name] ||= "#{options[:class_name]}[#{attribute}]"
|
@@ -66,7 +66,7 @@ module SchnitzelPress
|
|
66
66
|
else :text
|
67
67
|
end
|
68
68
|
|
69
|
-
partial 'form_field', object
|
69
|
+
partial 'form_field', :object => object, :attribute => attribute, :options => options
|
70
70
|
end
|
71
71
|
end
|
72
72
|
end
|
data/lib/schnitzelpress/post.rb
CHANGED
@@ -13,24 +13,24 @@ module SchnitzelPress
|
|
13
13
|
store_in :posts
|
14
14
|
|
15
15
|
# basic data
|
16
|
-
field :title, type
|
17
|
-
field :body, type
|
18
|
-
field :slugs, type
|
16
|
+
field :title, :type => String
|
17
|
+
field :body, :type => String
|
18
|
+
field :slugs, :type => Array, :default => []
|
19
19
|
|
20
20
|
# optional fields
|
21
|
-
field :summary, type
|
22
|
-
field :link, type
|
23
|
-
field :read_more, type
|
21
|
+
field :summary, :type => String
|
22
|
+
field :link, :type => String
|
23
|
+
field :read_more, :type => String
|
24
24
|
|
25
25
|
# times & status
|
26
|
-
field :published_at, type
|
27
|
-
field :status, type
|
26
|
+
field :published_at, :type => DateTime
|
27
|
+
field :status, :type => Symbol, :default => :draft
|
28
28
|
|
29
29
|
# flags
|
30
|
-
field :disqus, type
|
30
|
+
field :disqus, :type => Boolean, :default => false
|
31
31
|
|
32
32
|
# extra
|
33
|
-
field :body_html, type
|
33
|
+
field :body_html, :type => String
|
34
34
|
|
35
35
|
# indices
|
36
36
|
index :slugs
|
@@ -39,18 +39,18 @@ module SchnitzelPress
|
|
39
39
|
|
40
40
|
# validations
|
41
41
|
validates_presence_of :status, :slug
|
42
|
-
validates_inclusion_of :status, in
|
42
|
+
validates_inclusion_of :status, :in => [:draft, :published]
|
43
43
|
|
44
44
|
scope :published, where(:status => :published)
|
45
45
|
scope :drafts, where(:status => :draft)
|
46
46
|
scope :pages, where(:published_at => nil)
|
47
47
|
scope :posts, where(:published_at.ne => nil)
|
48
|
-
scope :article_posts,
|
49
|
-
scope :link_posts,
|
50
|
-
scope :for_year,
|
51
|
-
scope :for_month,
|
52
|
-
scope :for_day,
|
53
|
-
scope :latest,
|
48
|
+
scope :article_posts, lambda { posts.where(:link => nil) }
|
49
|
+
scope :link_posts, lambda { posts.where(:link.ne => nil) }
|
50
|
+
scope :for_year, lambda { |year| d = Date.new(year) ; where(:published_at => (d.beginning_of_year)..(d.end_of_year)) }
|
51
|
+
scope :for_month, lambda { |year, month| d = Date.new(year, month) ; where(:published_at => (d.beginning_of_month)..(d.end_of_month)) }
|
52
|
+
scope :for_day, lambda { |year, month, day| d = Date.new(year, month, day) ; where(:published_at => (d.beginning_of_day)..(d.end_of_day)) }
|
53
|
+
scope :latest, lambda { published.posts.desc(:published_at) }
|
54
54
|
|
55
55
|
before_validation :nil_if_blank
|
56
56
|
before_validation :set_defaults
|
@@ -83,12 +83,12 @@ module SchnitzelPress
|
|
83
83
|
|
84
84
|
def set_defaults
|
85
85
|
if slug.blank?
|
86
|
-
self.slug = (title || body.truncate(40, separator
|
86
|
+
self.slug = (title || body.truncate(40, :separator => ' ')).parameterize
|
87
87
|
end
|
88
88
|
end
|
89
89
|
|
90
90
|
def validate_slug
|
91
|
-
conflicting_posts = Post.where(slugs
|
91
|
+
conflicting_posts = Post.where(:slugs => slug)
|
92
92
|
if published_at.present?
|
93
93
|
conflicting_posts = conflicting_posts.for_day(published_at.year, published_at.month, published_at.day)
|
94
94
|
end
|
@@ -120,7 +120,7 @@ module SchnitzelPress
|
|
120
120
|
|
121
121
|
def render
|
122
122
|
@@markdown ||= Redcarpet::Markdown.new(MarkdownRenderer,
|
123
|
-
autolink
|
123
|
+
:autolink => true, :space_after_headers => true, :fenced_code_blocks => true)
|
124
124
|
|
125
125
|
@@markdown.render(body)
|
126
126
|
end
|
data/lib/schnitzelpress.rb
CHANGED
@@ -43,7 +43,7 @@ module Haml::Filters::Redcarpet
|
|
43
43
|
|
44
44
|
def render(text)
|
45
45
|
Redcarpet::Markdown.new(SchnitzelPress::MarkdownRenderer,
|
46
|
-
autolink
|
46
|
+
:autolink => true, :space_after_headers => true, :fenced_code_blocks => true).
|
47
47
|
render(text)
|
48
48
|
end
|
49
49
|
end
|
data/lib/views/admin/admin.haml
CHANGED
@@ -4,9 +4,9 @@
|
|
4
4
|
You're logged in as #{session[:user]}.
|
5
5
|
%ul.admin
|
6
6
|
%li
|
7
|
-
%a.green.button{href
|
8
|
-
%a.red.button{href
|
7
|
+
%a.green.button{:href => '/admin/new'} Create new Post
|
8
|
+
%a.red.button{:href => '/logout'} Logout
|
9
9
|
|
10
|
-
= partial "admin_post_list", posts
|
11
|
-
= partial "admin_post_list", posts
|
12
|
-
= partial "admin_post_list", posts
|
10
|
+
= partial "admin_post_list", :posts => @drafts, :title => "Drafts"
|
11
|
+
= partial "admin_post_list", :posts => @posts, :title => "Published Posts"
|
12
|
+
= partial "admin_post_list", :posts => @pages, :title => "Pages"
|
data/lib/views/admin/edit.haml
CHANGED
data/lib/views/admin/new.haml
CHANGED
data/lib/views/atom.haml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
!!! XML
|
2
|
-
%feed{xmlns
|
2
|
+
%feed{:xmlns => 'http://www.w3.org/2005/Atom'}
|
3
3
|
%title= settings.blog_title
|
4
|
-
%link{href
|
4
|
+
%link{:href => url_for('/', :absolute => true)}
|
5
5
|
%id= base_url
|
6
6
|
- if @posts.any?
|
7
7
|
%updated= @posts.first.published_at
|
@@ -12,12 +12,12 @@
|
|
12
12
|
- @posts.each do |post|
|
13
13
|
%entry
|
14
14
|
%title= html_escape post.title
|
15
|
-
%link{href
|
16
|
-
%id= url_for(post, absolute
|
15
|
+
%link{:href => url_for(post, :absolute => true)}
|
16
|
+
%id= url_for(post, :absolute => true)
|
17
17
|
%published= post.published_at
|
18
18
|
%updated= post.published_at
|
19
19
|
%author
|
20
20
|
%name= settings.author_name
|
21
|
-
%content{type
|
21
|
+
%content{:type => 'html'}
|
22
22
|
:cdata
|
23
23
|
#{post.to_html}
|
data/lib/views/index.haml
CHANGED
data/lib/views/layout.haml
CHANGED
@@ -2,18 +2,18 @@
|
|
2
2
|
%html
|
3
3
|
%head
|
4
4
|
%title= [@page_title, settings.blog_title].compact.join(" | ")
|
5
|
-
%meta{ :"http-equiv" => "content-type", content
|
6
|
-
%meta{ name
|
7
|
-
%link{ href
|
8
|
-
%link{ href
|
9
|
-
%script{ type
|
10
|
-
%script{ type
|
11
|
-
%script{ type
|
5
|
+
%meta{ :"http-equiv" => "content-type", :content => "text/html; charset=UTF-8" }
|
6
|
+
%meta{ :name => "viewport", :content => "width=device-width, initial-scale=1.0" }
|
7
|
+
%link{ :href => '/blog.css', :media => "screen", :rel => "stylesheet", :type => "text/css" }
|
8
|
+
%link{ :href => settings.feed_url, :title => "Subscribe via Atom Feed", :rel => 'alternate', :type => 'application/atom+xml' }
|
9
|
+
%script{ :type => 'text/javascript', :src => '//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js' }
|
10
|
+
%script{ :type => 'text/javascript', :src => '//browserid.org/include.js' }
|
11
|
+
%script{ :type => 'text/javascript', :src => '/js/schnitzelpress.js' }
|
12
12
|
%body
|
13
13
|
.container
|
14
14
|
%header
|
15
15
|
.site-title
|
16
|
-
%a{href
|
16
|
+
%a{:href => '/'}= settings.blog_title
|
17
17
|
- if @show_description
|
18
18
|
~ markdown settings.blog_description
|
19
19
|
|
data/lib/views/login.haml
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
Please use one of the following services to log in:
|
6
6
|
|
7
7
|
%p
|
8
|
-
%a.button#browser_id{href
|
8
|
+
%a.button#browser_id{:href => '#'} Log in with BrowserID
|
9
9
|
|
10
|
-
%form{method
|
11
|
-
%input{type
|
10
|
+
%form{:method => 'post', :action => '/auth/browser_id/callback', :noValidate => 'noValidate'}
|
11
|
+
%input{:type => 'hidden', :name => 'assertion'}
|
@@ -4,8 +4,8 @@
|
|
4
4
|
- posts.each do |post|
|
5
5
|
%ul.admin
|
6
6
|
%li
|
7
|
-
%a.button{href
|
7
|
+
%a.button{:href => "/admin/edit/#{post.id}"} edit
|
8
8
|
%li
|
9
|
-
%a.button{href
|
9
|
+
%a.button{:href => url_for(post)} view
|
10
10
|
%li
|
11
11
|
= post.title || ("%s..." % html_escape(post.body.first(50)))
|
@@ -1,26 +1,26 @@
|
|
1
1
|
- field_options = options.slice(:id, :name, :placeholder)
|
2
2
|
|
3
|
-
.input{
|
4
|
-
%label{
|
3
|
+
.input{:class => [options[:type], options[:class]]}
|
4
|
+
%label{:for => options[:id]} #{options[:label]}:
|
5
5
|
- case options[:type].to_sym
|
6
6
|
- when :textarea
|
7
|
-
%textarea{
|
7
|
+
%textarea{:id => options[:id], :name => options[:name], :rows => options[:rows] || 20, :placeholder => options[:placeholder]}= html_escape(options[:value])
|
8
8
|
|
9
9
|
- when :radio
|
10
10
|
- options[:options].each do |o|
|
11
11
|
.option
|
12
|
-
%input{
|
12
|
+
%input{field_options.merge(:type => 'radio', :value => o, :checked => options[:value] == o)}= o
|
13
13
|
|
14
14
|
- when :dropdown
|
15
|
-
%select{
|
15
|
+
%select{field_options}
|
16
16
|
- options[:options].each do |val, text|
|
17
|
-
%option{value
|
17
|
+
%option{:value => val, :selected => options[:value] == val}= text
|
18
18
|
|
19
19
|
- when :datetime
|
20
|
-
%input{
|
20
|
+
%input{field_options.merge(:value => options[:value].to_formatted_s(:db))}
|
21
21
|
|
22
22
|
- else # normal inputs
|
23
|
-
%input{
|
23
|
+
%input{field_options.merge(:value => options[:value])}
|
24
24
|
|
25
25
|
- if options[:errors]
|
26
26
|
.error= options[:errors].join(", ")
|
@@ -6,11 +6,11 @@
|
|
6
6
|
- show_permalink ||= admin_logged_in? || (post.post? && !show_read_more)
|
7
7
|
- show_twitter ||= complete && post.post? && settings.twitter_id.present?
|
8
8
|
|
9
|
-
%article.post{class
|
9
|
+
%article.post{:class => [post.status, post.link_post? ? 'link' : 'article']}
|
10
10
|
%header
|
11
11
|
- if show_title
|
12
12
|
%h1
|
13
|
-
%a{href
|
13
|
+
%a{:href => post.link || post.to_url}= post.title
|
14
14
|
- if post.link_post?
|
15
15
|
%span.link-arrow ➝
|
16
16
|
|
@@ -19,7 +19,7 @@
|
|
19
19
|
~ markdown post.summary
|
20
20
|
- if show_read_more
|
21
21
|
%p
|
22
|
-
%a{href
|
22
|
+
%a{:href => url_for(post)}= post.read_more.presence || settings.read_more
|
23
23
|
→
|
24
24
|
|
25
25
|
- if show_body
|
@@ -28,14 +28,14 @@
|
|
28
28
|
%footer
|
29
29
|
- if show_permalink
|
30
30
|
%p.permalink
|
31
|
-
%a{href
|
31
|
+
%a{:href => url_for(post)}= post.published_at.try(:to_date) || "∞"
|
32
32
|
- if admin_logged_in?
|
33
33
|
·
|
34
|
-
%a{href
|
34
|
+
%a{:href => "/admin/edit/#{post.id}"} edit
|
35
35
|
|
36
36
|
- if show_twitter
|
37
37
|
.social_media_buttons
|
38
38
|
- if show_twitter
|
39
|
-
%a{
|
39
|
+
%a{:href => "https://twitter.com/share", :class => "twitter-share-button", :data => {:via => settings.twitter_id}}
|
40
40
|
:javascript
|
41
41
|
!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0];if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src="//platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");
|
@@ -1,18 +1,18 @@
|
|
1
|
-
%form.post{
|
2
|
-
%input{
|
3
|
-
= form_field @post, :title, placeholder
|
4
|
-
= form_field @post, :link, placeholder
|
5
|
-
= form_field @post, :summary, type
|
6
|
-
= form_field @post, :body, type
|
7
|
-
= form_field @post, :read_more, label
|
1
|
+
%form.post{:action => @post.new_record? ? '/admin/new' : "/admin/edit/#{@post.id}", :method => 'post'}
|
2
|
+
%input{:type => 'hidden', :name => '_method', :value => @post.new_record? ? 'post' : 'put'}
|
3
|
+
= form_field @post, :title, :placeholder => "Title of your post."
|
4
|
+
= form_field @post, :link, :placeholder => "Optional link to external URL."
|
5
|
+
= form_field @post, :summary, :type => :textarea, :rows => 5, :placeholder => "An optional summary of your post. Markdown formatting available."
|
6
|
+
= form_field @post, :body, :type => :textarea, :rows => 20, :placeholder => "Your post's body of text. Markdown formatting available."
|
7
|
+
= form_field @post, :read_more, :label => "'Read More' Link Text", :placeholder => "When supplying a summary text, this will be the link to the full post."
|
8
8
|
|
9
9
|
.row
|
10
10
|
.four.columns
|
11
|
-
= form_field @post, :slug, label
|
11
|
+
= form_field @post, :slug, :label => 'URL Slug', :placeholder => "Your post's URL slug.", :hint => @post.previous_slugs.any? ? "Previous slugs: #{@post.previous_slugs.join ', '}" : nil
|
12
12
|
.four.columns
|
13
|
-
= form_field @post, :published_at, placeholder
|
13
|
+
= form_field @post, :published_at, :placeholder => 'Try "now", "in 3 days", ...'
|
14
14
|
.four.columns
|
15
|
-
= form_field @post, :status, type
|
15
|
+
= form_field @post, :status, :type => :dropdown, :options => [[:draft, "Draft"], [:published, "Published"]]
|
16
16
|
|
17
17
|
.buttons
|
18
|
-
%input{
|
18
|
+
%input{:type => 'submit', :value => @post.new_record? ? 'Create Post' : 'Update Post' }
|
data/lib/views/post.haml
CHANGED
data/spec/app_spec.rb
CHANGED
@@ -23,8 +23,8 @@ describe SchnitzelPress::App do
|
|
23
23
|
subject { last_response }
|
24
24
|
|
25
25
|
it { should be_ok }
|
26
|
-
its(:body) { should have_tag 'title', text
|
27
|
-
its(:body) { should have_tag 'section.posts > article.post.published', count
|
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
28
|
its(:body) { should_not have_tag 'section.posts > article.post.draft' }
|
29
29
|
end
|
30
30
|
|
@@ -49,7 +49,7 @@ describe SchnitzelPress::App do
|
|
49
49
|
describe 'viewing a single post' do
|
50
50
|
context 'when the post has multiple slugs' do
|
51
51
|
before do
|
52
|
-
@post = Factory(:published_post, published_at
|
52
|
+
@post = Factory(:published_post, :published_at => "2011-12-10 12:00", :slugs => ['ancient-slug', 'old-slug', 'current-slug'])
|
53
53
|
end
|
54
54
|
|
55
55
|
it 'should enforce the canonical URL' do
|
data/spec/factories.rb
CHANGED
@@ -1,28 +1,28 @@
|
|
1
1
|
FactoryGirl.define do
|
2
|
-
factory :post, class
|
2
|
+
factory :post, :class => SchnitzelPress::Post do
|
3
3
|
title { Faker::Lorem.sentence }
|
4
4
|
body { Faker::Lorem.paragraphs }
|
5
5
|
published_at { Time.now }
|
6
6
|
end
|
7
7
|
|
8
|
-
factory :published_post, parent
|
8
|
+
factory :published_post, :parent => :post do
|
9
9
|
status :published
|
10
10
|
end
|
11
11
|
|
12
|
-
factory :draft_post, parent
|
12
|
+
factory :draft_post, :parent => :post do
|
13
13
|
status :draft
|
14
14
|
end
|
15
15
|
|
16
|
-
factory :page, parent
|
16
|
+
factory :page, :parent => :post do
|
17
17
|
published_at nil
|
18
18
|
end
|
19
19
|
|
20
|
-
factory :published_page, parent
|
20
|
+
factory :published_page, :parent => :page do
|
21
21
|
status :published
|
22
22
|
published_at nil
|
23
23
|
end
|
24
24
|
|
25
|
-
factory :draft_page, parent
|
25
|
+
factory :draft_page, :parent => :page do
|
26
26
|
status :draft
|
27
27
|
end
|
28
28
|
end
|
data/spec/post_spec.rb
CHANGED
@@ -45,7 +45,7 @@ describe SchnitzelPress::Post do
|
|
45
45
|
|
46
46
|
context "when another post on the same day is already using the same slug" do
|
47
47
|
before do
|
48
|
-
@other_post = Factory(:published_post, slugs
|
48
|
+
@other_post = Factory(:published_post, :slugs => ["amazing-slug"])
|
49
49
|
subject.published_at = @other_post.published_at
|
50
50
|
subject.slug = "amazing-slug"
|
51
51
|
end
|
@@ -57,7 +57,7 @@ describe SchnitzelPress::Post do
|
|
57
57
|
subject { Factory.build(:draft_page) }
|
58
58
|
|
59
59
|
before do
|
60
|
-
@other_page = Factory(:published_page, slugs
|
60
|
+
@other_page = Factory(:published_page, :slugs => ["amazing-slug"])
|
61
61
|
subject.slug = "amazing-slug"
|
62
62
|
end
|
63
63
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: schnitzelpress
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.12
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -13,7 +13,7 @@ date: 2012-02-24 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rack
|
16
|
-
requirement: &
|
16
|
+
requirement: &70263082810460 !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: *70263082810460
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: sinatra
|
27
|
-
requirement: &
|
27
|
+
requirement: &70263082809960 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ~>
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: 1.3.2
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70263082809960
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: activesupport
|
38
|
-
requirement: &
|
38
|
+
requirement: &70263082809500 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ~>
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: 3.2.0
|
44
44
|
type: :runtime
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70263082809500
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: rack-cache
|
49
|
-
requirement: &
|
49
|
+
requirement: &70263082809040 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ~>
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: 1.1.0
|
55
55
|
type: :runtime
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *70263082809040
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: mongo
|
60
|
-
requirement: &
|
60
|
+
requirement: &70263082808540 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ~>
|
@@ -65,10 +65,10 @@ dependencies:
|
|
65
65
|
version: 1.5.2
|
66
66
|
type: :runtime
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *70263082808540
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: mongoid
|
71
|
-
requirement: &
|
71
|
+
requirement: &70263082808060 !ruby/object:Gem::Requirement
|
72
72
|
none: false
|
73
73
|
requirements:
|
74
74
|
- - ~>
|
@@ -76,10 +76,10 @@ dependencies:
|
|
76
76
|
version: 2.4.0
|
77
77
|
type: :runtime
|
78
78
|
prerelease: false
|
79
|
-
version_requirements: *
|
79
|
+
version_requirements: *70263082808060
|
80
80
|
- !ruby/object:Gem::Dependency
|
81
81
|
name: bson_ext
|
82
|
-
requirement: &
|
82
|
+
requirement: &70263082807480 !ruby/object:Gem::Requirement
|
83
83
|
none: false
|
84
84
|
requirements:
|
85
85
|
- - ~>
|
@@ -87,10 +87,10 @@ dependencies:
|
|
87
87
|
version: 1.5.0
|
88
88
|
type: :runtime
|
89
89
|
prerelease: false
|
90
|
-
version_requirements: *
|
90
|
+
version_requirements: *70263082807480
|
91
91
|
- !ruby/object:Gem::Dependency
|
92
92
|
name: omniauth
|
93
|
-
requirement: &
|
93
|
+
requirement: &70263082806900 !ruby/object:Gem::Requirement
|
94
94
|
none: false
|
95
95
|
requirements:
|
96
96
|
- - ~>
|
@@ -98,10 +98,10 @@ dependencies:
|
|
98
98
|
version: 1.0.2
|
99
99
|
type: :runtime
|
100
100
|
prerelease: false
|
101
|
-
version_requirements: *
|
101
|
+
version_requirements: *70263082806900
|
102
102
|
- !ruby/object:Gem::Dependency
|
103
103
|
name: omniauth-browserid
|
104
|
-
requirement: &
|
104
|
+
requirement: &70263082806260 !ruby/object:Gem::Requirement
|
105
105
|
none: false
|
106
106
|
requirements:
|
107
107
|
- - ~>
|
@@ -109,10 +109,10 @@ dependencies:
|
|
109
109
|
version: 0.0.1
|
110
110
|
type: :runtime
|
111
111
|
prerelease: false
|
112
|
-
version_requirements: *
|
112
|
+
version_requirements: *70263082806260
|
113
113
|
- !ruby/object:Gem::Dependency
|
114
114
|
name: haml
|
115
|
-
requirement: &
|
115
|
+
requirement: &70263082805260 !ruby/object:Gem::Requirement
|
116
116
|
none: false
|
117
117
|
requirements:
|
118
118
|
- - ~>
|
@@ -120,10 +120,10 @@ dependencies:
|
|
120
120
|
version: 3.1.4
|
121
121
|
type: :runtime
|
122
122
|
prerelease: false
|
123
|
-
version_requirements: *
|
123
|
+
version_requirements: *70263082805260
|
124
124
|
- !ruby/object:Gem::Dependency
|
125
125
|
name: sass
|
126
|
-
requirement: &
|
126
|
+
requirement: &70263082804800 !ruby/object:Gem::Requirement
|
127
127
|
none: false
|
128
128
|
requirements:
|
129
129
|
- - ~>
|
@@ -131,10 +131,10 @@ dependencies:
|
|
131
131
|
version: 3.1.15
|
132
132
|
type: :runtime
|
133
133
|
prerelease: false
|
134
|
-
version_requirements: *
|
134
|
+
version_requirements: *70263082804800
|
135
135
|
- !ruby/object:Gem::Dependency
|
136
136
|
name: redcarpet
|
137
|
-
requirement: &
|
137
|
+
requirement: &70263082804160 !ruby/object:Gem::Requirement
|
138
138
|
none: false
|
139
139
|
requirements:
|
140
140
|
- - ~>
|
@@ -142,10 +142,10 @@ dependencies:
|
|
142
142
|
version: 2.1.0
|
143
143
|
type: :runtime
|
144
144
|
prerelease: false
|
145
|
-
version_requirements: *
|
145
|
+
version_requirements: *70263082804160
|
146
146
|
- !ruby/object:Gem::Dependency
|
147
147
|
name: coderay
|
148
|
-
requirement: &
|
148
|
+
requirement: &70263082798940 !ruby/object:Gem::Requirement
|
149
149
|
none: false
|
150
150
|
requirements:
|
151
151
|
- - ~>
|
@@ -153,10 +153,10 @@ dependencies:
|
|
153
153
|
version: 1.0.5
|
154
154
|
type: :runtime
|
155
155
|
prerelease: false
|
156
|
-
version_requirements: *
|
156
|
+
version_requirements: *70263082798940
|
157
157
|
- !ruby/object:Gem::Dependency
|
158
158
|
name: schnitzelstyle
|
159
|
-
requirement: &
|
159
|
+
requirement: &70263082798400 !ruby/object:Gem::Requirement
|
160
160
|
none: false
|
161
161
|
requirements:
|
162
162
|
- - ~>
|
@@ -164,10 +164,10 @@ dependencies:
|
|
164
164
|
version: 0.0.10
|
165
165
|
type: :runtime
|
166
166
|
prerelease: false
|
167
|
-
version_requirements: *
|
167
|
+
version_requirements: *70263082798400
|
168
168
|
- !ruby/object:Gem::Dependency
|
169
169
|
name: i18n
|
170
|
-
requirement: &
|
170
|
+
requirement: &70263082797860 !ruby/object:Gem::Requirement
|
171
171
|
none: false
|
172
172
|
requirements:
|
173
173
|
- - ~>
|
@@ -175,10 +175,10 @@ dependencies:
|
|
175
175
|
version: 0.6.0
|
176
176
|
type: :runtime
|
177
177
|
prerelease: false
|
178
|
-
version_requirements: *
|
178
|
+
version_requirements: *70263082797860
|
179
179
|
- !ruby/object:Gem::Dependency
|
180
180
|
name: tilt
|
181
|
-
requirement: &
|
181
|
+
requirement: &70263082797160 !ruby/object:Gem::Requirement
|
182
182
|
none: false
|
183
183
|
requirements:
|
184
184
|
- - ~>
|
@@ -186,10 +186,10 @@ dependencies:
|
|
186
186
|
version: 1.3.0
|
187
187
|
type: :runtime
|
188
188
|
prerelease: false
|
189
|
-
version_requirements: *
|
189
|
+
version_requirements: *70263082797160
|
190
190
|
- !ruby/object:Gem::Dependency
|
191
191
|
name: ruby-oembed
|
192
|
-
requirement: &
|
192
|
+
requirement: &70263082796240 !ruby/object:Gem::Requirement
|
193
193
|
none: false
|
194
194
|
requirements:
|
195
195
|
- - ~>
|
@@ -197,10 +197,10 @@ dependencies:
|
|
197
197
|
version: 0.8.5
|
198
198
|
type: :runtime
|
199
199
|
prerelease: false
|
200
|
-
version_requirements: *
|
200
|
+
version_requirements: *70263082796240
|
201
201
|
- !ruby/object:Gem::Dependency
|
202
202
|
name: thor
|
203
|
-
requirement: &
|
203
|
+
requirement: &70263082795780 !ruby/object:Gem::Requirement
|
204
204
|
none: false
|
205
205
|
requirements:
|
206
206
|
- - ~>
|
@@ -208,10 +208,10 @@ dependencies:
|
|
208
208
|
version: 0.14.6
|
209
209
|
type: :runtime
|
210
210
|
prerelease: false
|
211
|
-
version_requirements: *
|
211
|
+
version_requirements: *70263082795780
|
212
212
|
- !ruby/object:Gem::Dependency
|
213
213
|
name: rake
|
214
|
-
requirement: &
|
214
|
+
requirement: &70263082795300 !ruby/object:Gem::Requirement
|
215
215
|
none: false
|
216
216
|
requirements:
|
217
217
|
- - ~>
|
@@ -219,10 +219,10 @@ dependencies:
|
|
219
219
|
version: 0.9.2.2
|
220
220
|
type: :runtime
|
221
221
|
prerelease: false
|
222
|
-
version_requirements: *
|
222
|
+
version_requirements: *70263082795300
|
223
223
|
- !ruby/object:Gem::Dependency
|
224
224
|
name: wirble
|
225
|
-
requirement: &
|
225
|
+
requirement: &70263082794640 !ruby/object:Gem::Requirement
|
226
226
|
none: false
|
227
227
|
requirements:
|
228
228
|
- - ~>
|
@@ -230,10 +230,10 @@ dependencies:
|
|
230
230
|
version: 0.1.3
|
231
231
|
type: :runtime
|
232
232
|
prerelease: false
|
233
|
-
version_requirements: *
|
233
|
+
version_requirements: *70263082794640
|
234
234
|
- !ruby/object:Gem::Dependency
|
235
235
|
name: chronic
|
236
|
-
requirement: &
|
236
|
+
requirement: &70263082793940 !ruby/object:Gem::Requirement
|
237
237
|
none: false
|
238
238
|
requirements:
|
239
239
|
- - ~>
|
@@ -241,10 +241,10 @@ dependencies:
|
|
241
241
|
version: 0.6.7
|
242
242
|
type: :runtime
|
243
243
|
prerelease: false
|
244
|
-
version_requirements: *
|
244
|
+
version_requirements: *70263082793940
|
245
245
|
- !ruby/object:Gem::Dependency
|
246
246
|
name: rspec
|
247
|
-
requirement: &
|
247
|
+
requirement: &70263082793340 !ruby/object:Gem::Requirement
|
248
248
|
none: false
|
249
249
|
requirements:
|
250
250
|
- - ! '>='
|
@@ -252,10 +252,10 @@ dependencies:
|
|
252
252
|
version: 2.8.0
|
253
253
|
type: :development
|
254
254
|
prerelease: false
|
255
|
-
version_requirements: *
|
255
|
+
version_requirements: *70263082793340
|
256
256
|
- !ruby/object:Gem::Dependency
|
257
257
|
name: rspec-html-matchers
|
258
|
-
requirement: &
|
258
|
+
requirement: &70263082792960 !ruby/object:Gem::Requirement
|
259
259
|
none: false
|
260
260
|
requirements:
|
261
261
|
- - ! '>='
|
@@ -263,10 +263,10 @@ dependencies:
|
|
263
263
|
version: '0'
|
264
264
|
type: :development
|
265
265
|
prerelease: false
|
266
|
-
version_requirements: *
|
266
|
+
version_requirements: *70263082792960
|
267
267
|
- !ruby/object:Gem::Dependency
|
268
268
|
name: database_cleaner
|
269
|
-
requirement: &
|
269
|
+
requirement: &70263082792500 !ruby/object:Gem::Requirement
|
270
270
|
none: false
|
271
271
|
requirements:
|
272
272
|
- - ! '>='
|
@@ -274,10 +274,10 @@ dependencies:
|
|
274
274
|
version: '0'
|
275
275
|
type: :development
|
276
276
|
prerelease: false
|
277
|
-
version_requirements: *
|
277
|
+
version_requirements: *70263082792500
|
278
278
|
- !ruby/object:Gem::Dependency
|
279
279
|
name: factory_girl
|
280
|
-
requirement: &
|
280
|
+
requirement: &70263082791960 !ruby/object:Gem::Requirement
|
281
281
|
none: false
|
282
282
|
requirements:
|
283
283
|
- - ~>
|
@@ -285,10 +285,10 @@ dependencies:
|
|
285
285
|
version: 2.6.0
|
286
286
|
type: :development
|
287
287
|
prerelease: false
|
288
|
-
version_requirements: *
|
288
|
+
version_requirements: *70263082791960
|
289
289
|
- !ruby/object:Gem::Dependency
|
290
290
|
name: ffaker
|
291
|
-
requirement: &
|
291
|
+
requirement: &70263082791540 !ruby/object:Gem::Requirement
|
292
292
|
none: false
|
293
293
|
requirements:
|
294
294
|
- - ! '>='
|
@@ -296,10 +296,10 @@ dependencies:
|
|
296
296
|
version: '0'
|
297
297
|
type: :development
|
298
298
|
prerelease: false
|
299
|
-
version_requirements: *
|
299
|
+
version_requirements: *70263082791540
|
300
300
|
- !ruby/object:Gem::Dependency
|
301
301
|
name: timecop
|
302
|
-
requirement: &
|
302
|
+
requirement: &70263082791060 !ruby/object:Gem::Requirement
|
303
303
|
none: false
|
304
304
|
requirements:
|
305
305
|
- - ! '>='
|
@@ -307,10 +307,10 @@ dependencies:
|
|
307
307
|
version: '0'
|
308
308
|
type: :development
|
309
309
|
prerelease: false
|
310
|
-
version_requirements: *
|
310
|
+
version_requirements: *70263082791060
|
311
311
|
- !ruby/object:Gem::Dependency
|
312
312
|
name: shotgun
|
313
|
-
requirement: &
|
313
|
+
requirement: &70263082784420 !ruby/object:Gem::Requirement
|
314
314
|
none: false
|
315
315
|
requirements:
|
316
316
|
- - ! '>='
|
@@ -318,10 +318,10 @@ dependencies:
|
|
318
318
|
version: '0'
|
319
319
|
type: :development
|
320
320
|
prerelease: false
|
321
|
-
version_requirements: *
|
321
|
+
version_requirements: *70263082784420
|
322
322
|
- !ruby/object:Gem::Dependency
|
323
323
|
name: rack-test
|
324
|
-
requirement: &
|
324
|
+
requirement: &70263082783780 !ruby/object:Gem::Requirement
|
325
325
|
none: false
|
326
326
|
requirements:
|
327
327
|
- - ! '>='
|
@@ -329,10 +329,10 @@ dependencies:
|
|
329
329
|
version: '0'
|
330
330
|
type: :development
|
331
331
|
prerelease: false
|
332
|
-
version_requirements: *
|
332
|
+
version_requirements: *70263082783780
|
333
333
|
- !ruby/object:Gem::Dependency
|
334
334
|
name: watchr
|
335
|
-
requirement: &
|
335
|
+
requirement: &70263082782820 !ruby/object:Gem::Requirement
|
336
336
|
none: false
|
337
337
|
requirements:
|
338
338
|
- - ! '>='
|
@@ -340,10 +340,10 @@ dependencies:
|
|
340
340
|
version: '0'
|
341
341
|
type: :development
|
342
342
|
prerelease: false
|
343
|
-
version_requirements: *
|
343
|
+
version_requirements: *70263082782820
|
344
344
|
- !ruby/object:Gem::Dependency
|
345
345
|
name: awesome_print
|
346
|
-
requirement: &
|
346
|
+
requirement: &70263082782400 !ruby/object:Gem::Requirement
|
347
347
|
none: false
|
348
348
|
requirements:
|
349
349
|
- - ! '>='
|
@@ -351,7 +351,7 @@ dependencies:
|
|
351
351
|
version: '0'
|
352
352
|
type: :development
|
353
353
|
prerelease: false
|
354
|
-
version_requirements: *
|
354
|
+
version_requirements: *70263082782400
|
355
355
|
description: A lean, mean blogging machine for hackers and fools.
|
356
356
|
email:
|
357
357
|
- hendrik@mans.de
|