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