days 0.1.7 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/days.gemspec +16 -16
- data/lib/days/app.rb +1 -1
- data/lib/days/app/entries.rb +7 -4
- data/lib/days/command.rb +8 -3
- data/lib/days/helpers.rb +2 -2
- data/lib/days/migrate/20131012011500_add_old_path_to_entries.rb +6 -0
- data/lib/days/models/entry.rb +1 -1
- data/lib/days/version.rb +1 -1
- data/scripts/tumblr_export.rb +188 -0
- data/spec/controllers/entries_spec.rb +25 -0
- data/spec/fixtures/entries.yml +1 -0
- metadata +73 -112
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 05ef76c071d08bf1521ffb377fca1d0db8fca47a
|
4
|
+
data.tar.gz: 94f21c6f115d09105660345429d6e69cf2f3504b
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: a8c9b6ef9cf478e08d73ac02c0cdd5f40e365108cc5d12c4fae7219596b10cc0cad345709fbfe989df90c4670fa221569f73ced31699c1399e73d3a4f796d270
|
7
|
+
data.tar.gz: 9c8f993e8d8cb859140555f1866dc0154c0abd2af9f390907df0b41f7365b65e348783ed086bac22c4af9efcc9bcf144a5e7ab71bbcc7ac69b4aad9ce61680a0
|
data/days.gemspec
CHANGED
@@ -7,9 +7,9 @@ Gem::Specification.new do |gem|
|
|
7
7
|
gem.name = "days"
|
8
8
|
gem.version = Days::VERSION
|
9
9
|
gem.authors = ["Shota Fukumori (sora_h)"]
|
10
|
-
gem.email = ["sorah
|
11
|
-
gem.description = %q{Simple blog system built up with Sinatra.
|
12
|
-
gem.summary = %q{Simple blog system built up with Sinatra.
|
10
|
+
gem.email = ["her@sorah.jp"]
|
11
|
+
gem.description = %q{Simple blog system built up with Sinatra.}
|
12
|
+
gem.summary = %q{Simple blog system built up with Sinatra.}
|
13
13
|
gem.homepage = "https://github.com/sorah/days"
|
14
14
|
|
15
15
|
gem.files = `git ls-files`.split($/)
|
@@ -17,24 +17,24 @@ Gem::Specification.new do |gem|
|
|
17
17
|
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
18
18
|
gem.require_paths = ["lib"]
|
19
19
|
|
20
|
-
gem.add_dependency "sinatra", '~> 1.3'
|
21
|
-
gem.add_dependency "thor"
|
22
|
-
gem.add_dependency "rack_csrf"
|
20
|
+
gem.add_dependency "sinatra", '~> 1.3.3'
|
21
|
+
gem.add_dependency "thor", '~> 0.16.0'
|
22
|
+
gem.add_dependency "rack_csrf", '~> 2.4.0'
|
23
23
|
|
24
|
-
gem.add_dependency "settingslogic"
|
24
|
+
gem.add_dependency "settingslogic", '~> 2.0.9'
|
25
25
|
|
26
|
-
gem.add_dependency "sprockets"
|
27
|
-
gem.add_dependency "haml"
|
28
|
-
gem.add_dependency "sass"
|
26
|
+
gem.add_dependency "sprockets", '~> 2.2.2'
|
27
|
+
gem.add_dependency "haml", '~> 3.1.7'
|
28
|
+
gem.add_dependency "sass", '~> 3.2.5'
|
29
29
|
|
30
|
-
gem.add_dependency "redcarpet"
|
31
|
-
gem.add_dependency "builder"
|
30
|
+
gem.add_dependency "redcarpet", '~> 2.2.2'
|
31
|
+
gem.add_dependency "builder", '~> 3.0.0'
|
32
32
|
|
33
|
-
gem.add_dependency "activerecord", "~> 3.2"
|
33
|
+
gem.add_dependency "activerecord", "~> 3.2.14"
|
34
34
|
gem.add_dependency "kaminari", "~> 0.13"
|
35
|
-
gem.add_dependency "padrino-helpers"
|
36
|
-
gem.add_dependency "stringex"
|
37
|
-
gem.add_dependency "bcrypt-ruby"
|
35
|
+
gem.add_dependency "padrino-helpers", '~> 0.9.21'
|
36
|
+
gem.add_dependency "stringex", '~> 1.5.1'
|
37
|
+
gem.add_dependency "bcrypt-ruby", '~> 3.0.1'
|
38
38
|
|
39
39
|
gem.add_development_dependency "sqlite3"
|
40
40
|
|
data/lib/days/app.rb
CHANGED
data/lib/days/app/entries.rb
CHANGED
@@ -13,13 +13,16 @@ module Days
|
|
13
13
|
when Array
|
14
14
|
@title = entry.map(&:title).join(', ')
|
15
15
|
@entries = entry
|
16
|
-
haml
|
16
|
+
return haml(:entries)
|
17
17
|
when Entry
|
18
18
|
@title = entry.title
|
19
|
-
haml
|
19
|
+
return haml(:entry, locals: {entry: entry, full: true})
|
20
20
|
end
|
21
|
-
|
22
|
-
|
21
|
+
end
|
22
|
+
|
23
|
+
entry = Entry.where(old_path: request.path).first
|
24
|
+
if entry
|
25
|
+
return [301, {'Location' => entry_path(entry)}, ""]
|
23
26
|
end
|
24
27
|
end
|
25
28
|
|
data/lib/days/command.rb
CHANGED
@@ -112,8 +112,10 @@ module Days
|
|
112
112
|
line = JSON.parse(line)
|
113
113
|
|
114
114
|
attributes ={}
|
115
|
-
if Entry.where(id: line['id']).count.zero?
|
116
|
-
|
115
|
+
if line['id'] && Entry.where(id: line['id']).count.zero?
|
116
|
+
new_id = line['id']
|
117
|
+
else
|
118
|
+
new_id = nil
|
117
119
|
end
|
118
120
|
|
119
121
|
if line['user']
|
@@ -138,9 +140,12 @@ module Days
|
|
138
140
|
attributes[:body] = line['body'] if line['body']
|
139
141
|
attributes[:published_at] = line['published_at'] if line['published_at']
|
140
142
|
attributes[:draft] = line['draft'] if line['draft']
|
143
|
+
attributes[:old_path] = line['old_path'] if line['old_path']
|
141
144
|
|
142
145
|
p attributes[:title]
|
143
|
-
Entry.
|
146
|
+
entry = Entry.new(attributes)
|
147
|
+
entry.id = new_id if new_id
|
148
|
+
entry.save!
|
144
149
|
end
|
145
150
|
end
|
146
151
|
end
|
data/lib/days/helpers.rb
CHANGED
@@ -22,8 +22,8 @@ module Days
|
|
22
22
|
Rack::Csrf.csrf_tag(env)
|
23
23
|
end
|
24
24
|
|
25
|
-
def entry_path(entry)
|
26
|
-
return nil unless entry.published?
|
25
|
+
def entry_path(entry, allow_draft=false)
|
26
|
+
return nil unless allow_draft || entry.published?
|
27
27
|
|
28
28
|
published_at = entry.published_at
|
29
29
|
hash = {
|
data/lib/days/models/entry.rb
CHANGED
@@ -4,7 +4,7 @@ require 'redcarpet'
|
|
4
4
|
|
5
5
|
module Days
|
6
6
|
class Entry < ActiveRecord::Base
|
7
|
-
attr_accessible :title, :body, :slug, :published_at, :categories, :user, :draft
|
7
|
+
attr_accessible :title, :body, :slug, :published_at, :categories, :user, :draft, :old_path
|
8
8
|
|
9
9
|
validates_uniqueness_of :slug
|
10
10
|
validates_presence_of :title, :body, :rendered, :slug
|
data/lib/days/version.rb
CHANGED
@@ -0,0 +1,188 @@
|
|
1
|
+
require 'json'
|
2
|
+
require 'stringex'
|
3
|
+
require 'time'
|
4
|
+
require 'open-uri'
|
5
|
+
|
6
|
+
if ARGV.size < 1 || %w(--help -h).include?(ARGV[0])
|
7
|
+
puts "Usage: #{File.basename __FILE__} tumblelog [api_key] [--ignore-ids]"
|
8
|
+
puts ""
|
9
|
+
puts "This exports your tumblelog for `days import`."
|
10
|
+
puts "Exported texts will go STDOUT. Use redirection of your shell to save it."
|
11
|
+
puts ""
|
12
|
+
puts "When api_key not specified, this will see $TUMBLR_API_KEY, or ask to you."
|
13
|
+
puts "Don't know how to Take API key? See here: http://www.tumblr.com/docs/en/api/v2#auth"
|
14
|
+
puts ""
|
15
|
+
puts "NOTE: This won't save images, and all other external resources. Just save texts, only."
|
16
|
+
exit
|
17
|
+
end
|
18
|
+
|
19
|
+
def ask_for_key
|
20
|
+
require 'io/console'
|
21
|
+
abort "Can't access console, please specify your key via $TUMBLR_API_key or the 2nd argument" unless IO.console
|
22
|
+
|
23
|
+
IO.console.print "Tumblr API Key: "
|
24
|
+
IO.console.gets.chomp
|
25
|
+
end
|
26
|
+
|
27
|
+
def get_posts(tumblelog, key, offset=0)
|
28
|
+
response = open("http://api.tumblr.com/v2/blog/#{tumblelog}/posts?api_key=#{key}&offset=#{offset}", 'r', &:read)
|
29
|
+
JSON.parse(response)
|
30
|
+
end
|
31
|
+
|
32
|
+
ignore_id = !!ARGV.delete('--ignore-ids')
|
33
|
+
tumblelog = ARGV[0]
|
34
|
+
api_key = ARGV[1] || ENV["TUMBLR_API_KEY"] || ask_for_key
|
35
|
+
|
36
|
+
slugs = {}
|
37
|
+
|
38
|
+
offset = 0
|
39
|
+
loop do
|
40
|
+
payload = get_posts(tumblelog, api_key, offset)
|
41
|
+
break unless payload['response'] && payload['response']['posts']
|
42
|
+
posts = payload['response']['posts']
|
43
|
+
break if posts.empty?
|
44
|
+
|
45
|
+
posts.each do |post|
|
46
|
+
entry = {id: ignore_id ? post['id'].to_i : nil}
|
47
|
+
entry[:title] = post['title']
|
48
|
+
entry[:body] = post['body']
|
49
|
+
entry[:published_at] = Time.parse(post['date']).localtime
|
50
|
+
entry[:draft] = post['state'] != 'published'
|
51
|
+
post_uri = URI.parse(post['post_url'])
|
52
|
+
entry[:old_path] = post_uri.request_uri
|
53
|
+
if %r{\A/post/(\d+?)/(.+)\z} === post_uri.request_uri
|
54
|
+
entry[:slug] = $2
|
55
|
+
end
|
56
|
+
|
57
|
+
case post['type']
|
58
|
+
when 'text'
|
59
|
+
# do nothing
|
60
|
+
when 'photo'
|
61
|
+
warn "In post #{post['post_url']}, the following external resources won't be saved:"
|
62
|
+
post['photos'].each { |_| warn" - #{_['alt_sizes'][0]['url']}" }
|
63
|
+
|
64
|
+
entry[:title] = post['caption'] ? post['caption'].dup : ''
|
65
|
+
entry[:title].prepend('Photos: ')
|
66
|
+
entry[:body] = <<-EOF
|
67
|
+
<section class="t-photos">
|
68
|
+
<div class="t-photos-set">
|
69
|
+
#{post['photos'].map { |_| photo = _['alt_sizes'][0]; " <p><img src=\"#{photo['url']}\" width=\"#{_['width']}\" height=\"#{_['height']}\" alt=\"#{_['caption']}\"></p>" }.join("\n")}
|
70
|
+
</div>
|
71
|
+
<div class="t-photos-caption">
|
72
|
+
#{post['caption']}
|
73
|
+
</div>
|
74
|
+
</div>
|
75
|
+
EOF
|
76
|
+
when 'quote'
|
77
|
+
entry[:title] = post['text'] ? post['text'].dup : ''
|
78
|
+
entry[:title].prepend('Quote: ')
|
79
|
+
if 20 < entry[:title].size
|
80
|
+
entry[:title] = entry[:title][0, 20] + '...'
|
81
|
+
end
|
82
|
+
|
83
|
+
entry[:body] = <<-EOF
|
84
|
+
<section class="t-quote">
|
85
|
+
<blockquote class="t-quote-text">
|
86
|
+
#{post['text']}
|
87
|
+
</blockquote>
|
88
|
+
<div class="t-source">
|
89
|
+
#{(post['source'] && !post['source'].empty?) ? post['source'] : "<a href=\"#{post['source_url']}\">#{post['source_title'] || post['source_url']}</a>"}
|
90
|
+
</div>
|
91
|
+
</section>
|
92
|
+
EOF
|
93
|
+
when 'link'
|
94
|
+
entry[:title].prepend('Quote: ')
|
95
|
+
entry[:body] = <<-EOF
|
96
|
+
<section class="t-link">
|
97
|
+
<div class="t-link-text">
|
98
|
+
<a href="#{post['url']}">#{post['title']}</a>
|
99
|
+
</div>
|
100
|
+
<div class="t-link-description">
|
101
|
+
#{post['description']}
|
102
|
+
</div>
|
103
|
+
</section>
|
104
|
+
EOF
|
105
|
+
when 'chat'
|
106
|
+
entry[:body] = <<-EOF
|
107
|
+
<section class="t-chat">
|
108
|
+
#{ post['dialogue'].map { |d|
|
109
|
+
" <p><span class=\"t-chat-label\">#{d['label']}</span> <span class=\"t-chat-phrase\">#{d['phrase']}</span></p>"
|
110
|
+
}.join("\n") }
|
111
|
+
</section>
|
112
|
+
EOF
|
113
|
+
when 'audio'
|
114
|
+
warn "External Resource in #{post['post_url']} will be not saved"
|
115
|
+
entry[:title] = post['caption'] ? post['caption'].dup : ''
|
116
|
+
entry[:title].prepend('Audio: ')
|
117
|
+
if 20 < entry[:title].size
|
118
|
+
entry[:title] = entry[:title][0, 20] + '...'
|
119
|
+
end
|
120
|
+
|
121
|
+
entry[:body] = <<-EOF
|
122
|
+
<section class="t-audio">
|
123
|
+
<div class="t-audio-player">#{post['player']}</div>
|
124
|
+
<div class="t-audio-title">#{post['id3_title']}</title>
|
125
|
+
<div class="t-source">
|
126
|
+
#{(post['source'] && !post['source'].empty?) ? post['source'] : "<a href=\"#{post['source_url']}\">#{post['source_title'] || post['source_url']}</a>"}
|
127
|
+
</div>
|
128
|
+
<div class="t-caption">
|
129
|
+
#{post['caption']}
|
130
|
+
</div>
|
131
|
+
</section>
|
132
|
+
EOF
|
133
|
+
when 'video'
|
134
|
+
warn "External Resource in #{post['post_url']} will be not saved"
|
135
|
+
entry[:title] = post['caption'] ? post['caption'].dup : ''
|
136
|
+
entry[:title].prepend('Audio: ')
|
137
|
+
if 20 < entry[:title].size
|
138
|
+
entry[:title] = entry[:title][0, 20] + '...'
|
139
|
+
end
|
140
|
+
|
141
|
+
entry[:body] = <<-EOF
|
142
|
+
<section class="t-video">
|
143
|
+
<div class="t-video-player">#{post['player'][-1]['embed_code']}</div>
|
144
|
+
<div class="t-source">
|
145
|
+
#{(post['source'] && !post['source'].empty?) ? post['source'] : "<a href=\"#{post['source_url']}\">#{post['source_title'] || post['source_url']}</a>"}
|
146
|
+
</div>
|
147
|
+
<div class="t-caption">
|
148
|
+
#{post['caption']}
|
149
|
+
</div>
|
150
|
+
</section>
|
151
|
+
EOF
|
152
|
+
when 'answer'
|
153
|
+
entry[:title] = post['question'] ? post['question'].dup : ''
|
154
|
+
entry[:title].prepend('Answer for: ')
|
155
|
+
if 20 < entry[:title].size
|
156
|
+
entry[:title] = entry[:title][0, 20] + '...'
|
157
|
+
end
|
158
|
+
|
159
|
+
entry[:body] = <<-EOF
|
160
|
+
<section class="t-answer">
|
161
|
+
<blockquote class="t-answer-question">#{post['question']}</div>
|
162
|
+
<div class="t-source">
|
163
|
+
from <a href="#{post['asking_url']}">#{post['asking_name']}</a>
|
164
|
+
</div>
|
165
|
+
<div class="t-answer-text">
|
166
|
+
#{post['answer']}
|
167
|
+
</div>
|
168
|
+
</section>
|
169
|
+
EOF
|
170
|
+
end
|
171
|
+
|
172
|
+
if entry[:title].nil? || entry[:title].empty? || /\A\s*\z/ === entry[:title]
|
173
|
+
entry[:title] = "#{(post['type'] || 'Post').capitalize} at #{post['date']}"
|
174
|
+
entry[:slug] = "#{post['type'] || 'post'}-#{post['id']}"
|
175
|
+
end
|
176
|
+
|
177
|
+
entry[:slug] ||= entry[:title].to_url
|
178
|
+
if slugs[entry[:slug]]
|
179
|
+
entry[:slug].prepend "#{post['id']}-"
|
180
|
+
end
|
181
|
+
slugs[entry[:slug]] = true
|
182
|
+
|
183
|
+
|
184
|
+
puts entry.to_json
|
185
|
+
end
|
186
|
+
|
187
|
+
offset += posts.size
|
188
|
+
end
|
@@ -37,6 +37,31 @@ describe Days::App, type: :controller do
|
|
37
37
|
end
|
38
38
|
end
|
39
39
|
|
40
|
+
describe "redirection from old path" do
|
41
|
+
fixtures :categories, :entries
|
42
|
+
let(:path) { nil }
|
43
|
+
subject { get path, {}, {} }
|
44
|
+
|
45
|
+
before do
|
46
|
+
Days::App.any_instance.stub(lookup_entry: nil)
|
47
|
+
end
|
48
|
+
|
49
|
+
context "when entry not found" do
|
50
|
+
let(:path) { '/post/like-old-but-not-exists' }
|
51
|
+
|
52
|
+
it { should be_not_found }
|
53
|
+
end
|
54
|
+
|
55
|
+
context "when entry found by old path" do
|
56
|
+
let(:path) { '/post/old-path' }
|
57
|
+
|
58
|
+
it "redirects to present path" do
|
59
|
+
expect(subject.status).to eq 301
|
60
|
+
expect(subject['Location']).to eq '/2012/11/today-is-a-rainy-day'
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
40
65
|
describe "GET /:year/:month" do
|
41
66
|
fixtures :categories, :entries
|
42
67
|
subject { get '/2012/12', params }
|
data/spec/fixtures/entries.yml
CHANGED
metadata
CHANGED
@@ -1,180 +1,158 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: days
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
5
|
-
prerelease:
|
4
|
+
version: 0.2.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Shota Fukumori (sora_h)
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date: 2013-
|
11
|
+
date: 2013-10-11 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: sinatra
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
17
|
- - ~>
|
20
18
|
- !ruby/object:Gem::Version
|
21
|
-
version:
|
19
|
+
version: 1.3.3
|
22
20
|
type: :runtime
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
24
|
- - ~>
|
28
25
|
- !ruby/object:Gem::Version
|
29
|
-
version:
|
26
|
+
version: 1.3.3
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: thor
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
|
-
- -
|
31
|
+
- - ~>
|
36
32
|
- !ruby/object:Gem::Version
|
37
|
-
version:
|
33
|
+
version: 0.16.0
|
38
34
|
type: :runtime
|
39
35
|
prerelease: false
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
37
|
requirements:
|
43
|
-
- -
|
38
|
+
- - ~>
|
44
39
|
- !ruby/object:Gem::Version
|
45
|
-
version:
|
40
|
+
version: 0.16.0
|
46
41
|
- !ruby/object:Gem::Dependency
|
47
42
|
name: rack_csrf
|
48
43
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
44
|
requirements:
|
51
|
-
- -
|
45
|
+
- - ~>
|
52
46
|
- !ruby/object:Gem::Version
|
53
|
-
version:
|
47
|
+
version: 2.4.0
|
54
48
|
type: :runtime
|
55
49
|
prerelease: false
|
56
50
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
51
|
requirements:
|
59
|
-
- -
|
52
|
+
- - ~>
|
60
53
|
- !ruby/object:Gem::Version
|
61
|
-
version:
|
54
|
+
version: 2.4.0
|
62
55
|
- !ruby/object:Gem::Dependency
|
63
56
|
name: settingslogic
|
64
57
|
requirement: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
58
|
requirements:
|
67
|
-
- -
|
59
|
+
- - ~>
|
68
60
|
- !ruby/object:Gem::Version
|
69
|
-
version:
|
61
|
+
version: 2.0.9
|
70
62
|
type: :runtime
|
71
63
|
prerelease: false
|
72
64
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
-
none: false
|
74
65
|
requirements:
|
75
|
-
- -
|
66
|
+
- - ~>
|
76
67
|
- !ruby/object:Gem::Version
|
77
|
-
version:
|
68
|
+
version: 2.0.9
|
78
69
|
- !ruby/object:Gem::Dependency
|
79
70
|
name: sprockets
|
80
71
|
requirement: !ruby/object:Gem::Requirement
|
81
|
-
none: false
|
82
72
|
requirements:
|
83
|
-
- -
|
73
|
+
- - ~>
|
84
74
|
- !ruby/object:Gem::Version
|
85
|
-
version:
|
75
|
+
version: 2.2.2
|
86
76
|
type: :runtime
|
87
77
|
prerelease: false
|
88
78
|
version_requirements: !ruby/object:Gem::Requirement
|
89
|
-
none: false
|
90
79
|
requirements:
|
91
|
-
- -
|
80
|
+
- - ~>
|
92
81
|
- !ruby/object:Gem::Version
|
93
|
-
version:
|
82
|
+
version: 2.2.2
|
94
83
|
- !ruby/object:Gem::Dependency
|
95
84
|
name: haml
|
96
85
|
requirement: !ruby/object:Gem::Requirement
|
97
|
-
none: false
|
98
86
|
requirements:
|
99
|
-
- -
|
87
|
+
- - ~>
|
100
88
|
- !ruby/object:Gem::Version
|
101
|
-
version:
|
89
|
+
version: 3.1.7
|
102
90
|
type: :runtime
|
103
91
|
prerelease: false
|
104
92
|
version_requirements: !ruby/object:Gem::Requirement
|
105
|
-
none: false
|
106
93
|
requirements:
|
107
|
-
- -
|
94
|
+
- - ~>
|
108
95
|
- !ruby/object:Gem::Version
|
109
|
-
version:
|
96
|
+
version: 3.1.7
|
110
97
|
- !ruby/object:Gem::Dependency
|
111
98
|
name: sass
|
112
99
|
requirement: !ruby/object:Gem::Requirement
|
113
|
-
none: false
|
114
100
|
requirements:
|
115
|
-
- -
|
101
|
+
- - ~>
|
116
102
|
- !ruby/object:Gem::Version
|
117
|
-
version:
|
103
|
+
version: 3.2.5
|
118
104
|
type: :runtime
|
119
105
|
prerelease: false
|
120
106
|
version_requirements: !ruby/object:Gem::Requirement
|
121
|
-
none: false
|
122
107
|
requirements:
|
123
|
-
- -
|
108
|
+
- - ~>
|
124
109
|
- !ruby/object:Gem::Version
|
125
|
-
version:
|
110
|
+
version: 3.2.5
|
126
111
|
- !ruby/object:Gem::Dependency
|
127
112
|
name: redcarpet
|
128
113
|
requirement: !ruby/object:Gem::Requirement
|
129
|
-
none: false
|
130
114
|
requirements:
|
131
|
-
- -
|
115
|
+
- - ~>
|
132
116
|
- !ruby/object:Gem::Version
|
133
|
-
version:
|
117
|
+
version: 2.2.2
|
134
118
|
type: :runtime
|
135
119
|
prerelease: false
|
136
120
|
version_requirements: !ruby/object:Gem::Requirement
|
137
|
-
none: false
|
138
121
|
requirements:
|
139
|
-
- -
|
122
|
+
- - ~>
|
140
123
|
- !ruby/object:Gem::Version
|
141
|
-
version:
|
124
|
+
version: 2.2.2
|
142
125
|
- !ruby/object:Gem::Dependency
|
143
126
|
name: builder
|
144
127
|
requirement: !ruby/object:Gem::Requirement
|
145
|
-
none: false
|
146
128
|
requirements:
|
147
|
-
- -
|
129
|
+
- - ~>
|
148
130
|
- !ruby/object:Gem::Version
|
149
|
-
version:
|
131
|
+
version: 3.0.0
|
150
132
|
type: :runtime
|
151
133
|
prerelease: false
|
152
134
|
version_requirements: !ruby/object:Gem::Requirement
|
153
|
-
none: false
|
154
135
|
requirements:
|
155
|
-
- -
|
136
|
+
- - ~>
|
156
137
|
- !ruby/object:Gem::Version
|
157
|
-
version:
|
138
|
+
version: 3.0.0
|
158
139
|
- !ruby/object:Gem::Dependency
|
159
140
|
name: activerecord
|
160
141
|
requirement: !ruby/object:Gem::Requirement
|
161
|
-
none: false
|
162
142
|
requirements:
|
163
143
|
- - ~>
|
164
144
|
- !ruby/object:Gem::Version
|
165
|
-
version:
|
145
|
+
version: 3.2.14
|
166
146
|
type: :runtime
|
167
147
|
prerelease: false
|
168
148
|
version_requirements: !ruby/object:Gem::Requirement
|
169
|
-
none: false
|
170
149
|
requirements:
|
171
150
|
- - ~>
|
172
151
|
- !ruby/object:Gem::Version
|
173
|
-
version:
|
152
|
+
version: 3.2.14
|
174
153
|
- !ruby/object:Gem::Dependency
|
175
154
|
name: kaminari
|
176
155
|
requirement: !ruby/object:Gem::Requirement
|
177
|
-
none: false
|
178
156
|
requirements:
|
179
157
|
- - ~>
|
180
158
|
- !ruby/object:Gem::Version
|
@@ -182,7 +160,6 @@ dependencies:
|
|
182
160
|
type: :runtime
|
183
161
|
prerelease: false
|
184
162
|
version_requirements: !ruby/object:Gem::Requirement
|
185
|
-
none: false
|
186
163
|
requirements:
|
187
164
|
- - ~>
|
188
165
|
- !ruby/object:Gem::Version
|
@@ -190,150 +167,132 @@ dependencies:
|
|
190
167
|
- !ruby/object:Gem::Dependency
|
191
168
|
name: padrino-helpers
|
192
169
|
requirement: !ruby/object:Gem::Requirement
|
193
|
-
none: false
|
194
170
|
requirements:
|
195
|
-
- -
|
171
|
+
- - ~>
|
196
172
|
- !ruby/object:Gem::Version
|
197
|
-
version:
|
173
|
+
version: 0.9.21
|
198
174
|
type: :runtime
|
199
175
|
prerelease: false
|
200
176
|
version_requirements: !ruby/object:Gem::Requirement
|
201
|
-
none: false
|
202
177
|
requirements:
|
203
|
-
- -
|
178
|
+
- - ~>
|
204
179
|
- !ruby/object:Gem::Version
|
205
|
-
version:
|
180
|
+
version: 0.9.21
|
206
181
|
- !ruby/object:Gem::Dependency
|
207
182
|
name: stringex
|
208
183
|
requirement: !ruby/object:Gem::Requirement
|
209
|
-
none: false
|
210
184
|
requirements:
|
211
|
-
- -
|
185
|
+
- - ~>
|
212
186
|
- !ruby/object:Gem::Version
|
213
|
-
version:
|
187
|
+
version: 1.5.1
|
214
188
|
type: :runtime
|
215
189
|
prerelease: false
|
216
190
|
version_requirements: !ruby/object:Gem::Requirement
|
217
|
-
none: false
|
218
191
|
requirements:
|
219
|
-
- -
|
192
|
+
- - ~>
|
220
193
|
- !ruby/object:Gem::Version
|
221
|
-
version:
|
194
|
+
version: 1.5.1
|
222
195
|
- !ruby/object:Gem::Dependency
|
223
196
|
name: bcrypt-ruby
|
224
197
|
requirement: !ruby/object:Gem::Requirement
|
225
|
-
none: false
|
226
198
|
requirements:
|
227
|
-
- -
|
199
|
+
- - ~>
|
228
200
|
- !ruby/object:Gem::Version
|
229
|
-
version:
|
201
|
+
version: 3.0.1
|
230
202
|
type: :runtime
|
231
203
|
prerelease: false
|
232
204
|
version_requirements: !ruby/object:Gem::Requirement
|
233
|
-
none: false
|
234
205
|
requirements:
|
235
|
-
- -
|
206
|
+
- - ~>
|
236
207
|
- !ruby/object:Gem::Version
|
237
|
-
version:
|
208
|
+
version: 3.0.1
|
238
209
|
- !ruby/object:Gem::Dependency
|
239
210
|
name: sqlite3
|
240
211
|
requirement: !ruby/object:Gem::Requirement
|
241
|
-
none: false
|
242
212
|
requirements:
|
243
|
-
- -
|
213
|
+
- - '>='
|
244
214
|
- !ruby/object:Gem::Version
|
245
215
|
version: '0'
|
246
216
|
type: :development
|
247
217
|
prerelease: false
|
248
218
|
version_requirements: !ruby/object:Gem::Requirement
|
249
|
-
none: false
|
250
219
|
requirements:
|
251
|
-
- -
|
220
|
+
- - '>='
|
252
221
|
- !ruby/object:Gem::Version
|
253
222
|
version: '0'
|
254
223
|
- !ruby/object:Gem::Dependency
|
255
224
|
name: rspec
|
256
225
|
requirement: !ruby/object:Gem::Requirement
|
257
|
-
none: false
|
258
226
|
requirements:
|
259
|
-
- -
|
227
|
+
- - '>='
|
260
228
|
- !ruby/object:Gem::Version
|
261
229
|
version: '0'
|
262
230
|
type: :development
|
263
231
|
prerelease: false
|
264
232
|
version_requirements: !ruby/object:Gem::Requirement
|
265
|
-
none: false
|
266
233
|
requirements:
|
267
|
-
- -
|
234
|
+
- - '>='
|
268
235
|
- !ruby/object:Gem::Version
|
269
236
|
version: '0'
|
270
237
|
- !ruby/object:Gem::Dependency
|
271
238
|
name: rack-test
|
272
239
|
requirement: !ruby/object:Gem::Requirement
|
273
|
-
none: false
|
274
240
|
requirements:
|
275
|
-
- -
|
241
|
+
- - '>='
|
276
242
|
- !ruby/object:Gem::Version
|
277
243
|
version: '0'
|
278
244
|
type: :development
|
279
245
|
prerelease: false
|
280
246
|
version_requirements: !ruby/object:Gem::Requirement
|
281
|
-
none: false
|
282
247
|
requirements:
|
283
|
-
- -
|
248
|
+
- - '>='
|
284
249
|
- !ruby/object:Gem::Version
|
285
250
|
version: '0'
|
286
251
|
- !ruby/object:Gem::Dependency
|
287
252
|
name: fuubar
|
288
253
|
requirement: !ruby/object:Gem::Requirement
|
289
|
-
none: false
|
290
254
|
requirements:
|
291
|
-
- -
|
255
|
+
- - '>='
|
292
256
|
- !ruby/object:Gem::Version
|
293
257
|
version: '0'
|
294
258
|
type: :development
|
295
259
|
prerelease: false
|
296
260
|
version_requirements: !ruby/object:Gem::Requirement
|
297
|
-
none: false
|
298
261
|
requirements:
|
299
|
-
- -
|
262
|
+
- - '>='
|
300
263
|
- !ruby/object:Gem::Version
|
301
264
|
version: '0'
|
302
265
|
- !ruby/object:Gem::Dependency
|
303
266
|
name: pry
|
304
267
|
requirement: !ruby/object:Gem::Requirement
|
305
|
-
none: false
|
306
268
|
requirements:
|
307
|
-
- -
|
269
|
+
- - '>='
|
308
270
|
- !ruby/object:Gem::Version
|
309
271
|
version: '0'
|
310
272
|
type: :runtime
|
311
273
|
prerelease: false
|
312
274
|
version_requirements: !ruby/object:Gem::Requirement
|
313
|
-
none: false
|
314
275
|
requirements:
|
315
|
-
- -
|
276
|
+
- - '>='
|
316
277
|
- !ruby/object:Gem::Version
|
317
278
|
version: '0'
|
318
279
|
- !ruby/object:Gem::Dependency
|
319
280
|
name: pry-nav
|
320
281
|
requirement: !ruby/object:Gem::Requirement
|
321
|
-
none: false
|
322
282
|
requirements:
|
323
|
-
- -
|
283
|
+
- - '>='
|
324
284
|
- !ruby/object:Gem::Version
|
325
285
|
version: '0'
|
326
286
|
type: :development
|
327
287
|
prerelease: false
|
328
288
|
version_requirements: !ruby/object:Gem::Requirement
|
329
|
-
none: false
|
330
289
|
requirements:
|
331
|
-
- -
|
290
|
+
- - '>='
|
332
291
|
- !ruby/object:Gem::Version
|
333
292
|
version: '0'
|
334
|
-
description: Simple blog system built up with Sinatra.
|
293
|
+
description: Simple blog system built up with Sinatra.
|
335
294
|
email:
|
336
|
-
- sorah
|
295
|
+
- her@sorah.jp
|
337
296
|
executables:
|
338
297
|
- days
|
339
298
|
extensions: []
|
@@ -388,6 +347,7 @@ files:
|
|
388
347
|
- lib/days/migrate/20121221000000_create_entries.rb
|
389
348
|
- lib/days/migrate/20121221001000_create_users.rb
|
390
349
|
- lib/days/migrate/20121221002000_create_categories.rb
|
350
|
+
- lib/days/migrate/20131012011500_add_old_path_to_entries.rb
|
391
351
|
- lib/days/migrator.rb
|
392
352
|
- lib/days/models.rb
|
393
353
|
- lib/days/models/category.rb
|
@@ -395,6 +355,7 @@ files:
|
|
395
355
|
- lib/days/models/user.rb
|
396
356
|
- lib/days/version.rb
|
397
357
|
- scripts/lokka_export.rb
|
358
|
+
- scripts/tumblr_export.rb
|
398
359
|
- skeleton/days/Gemfile
|
399
360
|
- skeleton/days/config.ru
|
400
361
|
- skeleton/days/config.yml
|
@@ -419,28 +380,27 @@ files:
|
|
419
380
|
- tasks
|
420
381
|
homepage: https://github.com/sorah/days
|
421
382
|
licenses: []
|
383
|
+
metadata: {}
|
422
384
|
post_install_message:
|
423
385
|
rdoc_options: []
|
424
386
|
require_paths:
|
425
387
|
- lib
|
426
388
|
required_ruby_version: !ruby/object:Gem::Requirement
|
427
|
-
none: false
|
428
389
|
requirements:
|
429
|
-
- -
|
390
|
+
- - '>='
|
430
391
|
- !ruby/object:Gem::Version
|
431
392
|
version: '0'
|
432
393
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
433
|
-
none: false
|
434
394
|
requirements:
|
435
|
-
- -
|
395
|
+
- - '>='
|
436
396
|
- !ruby/object:Gem::Version
|
437
397
|
version: '0'
|
438
398
|
requirements: []
|
439
399
|
rubyforge_project:
|
440
|
-
rubygems_version:
|
400
|
+
rubygems_version: 2.0.3
|
441
401
|
signing_key:
|
442
|
-
specification_version:
|
443
|
-
summary: Simple blog system built up with Sinatra.
|
402
|
+
specification_version: 4
|
403
|
+
summary: Simple blog system built up with Sinatra.
|
444
404
|
test_files:
|
445
405
|
- spec/controllers/admin/categories_spec.rb
|
446
406
|
- spec/controllers/admin/entries_spec.rb
|
@@ -459,3 +419,4 @@ test_files:
|
|
459
419
|
- spec/models/entry_spec.rb
|
460
420
|
- spec/shared/admin.rb
|
461
421
|
- spec/spec_helper.rb
|
422
|
+
has_rdoc:
|