toto 0.1.2 → 0.1.3
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +7 -4
- data/VERSION +1 -1
- data/test/test_helper.rb +11 -5
- data/test/toto_test.rb +2 -2
- data/toto.gemspec +2 -2
- metadata +2 -2
data/README.md
CHANGED
@@ -19,6 +19,7 @@ how it works
|
|
19
19
|
|
20
20
|
- content is entirely managed trough **git**; you get full fledged version control for free.
|
21
21
|
- articles are stored as _.txt_ files, with embeded metadata (in yaml format).
|
22
|
+
- articles are processed through a markdown converter (rdiscount) by default.
|
22
23
|
- templating is done through **ERB**.
|
23
24
|
- toto is built right on top of **Rack**.
|
24
25
|
- comments are handled by disqus:(http://disqus.com)
|
@@ -70,13 +71,14 @@ Once he finishes writing his beautiful tale, one can push to the git repo, as us
|
|
70
71
|
|
71
72
|
Where `remote` is the name of your remote git repository. The article is now published.
|
72
73
|
|
73
|
-
###
|
74
|
+
### deployment
|
74
75
|
|
75
76
|
Toto is built on top of **Rack**, and hence has a **rackup** file: _config.ru_.
|
76
77
|
|
77
|
-
#### on your own
|
78
|
+
#### on your own server
|
78
79
|
|
79
|
-
|
80
|
+
Once you have created the remote git repo, and pushed your changes to it, you can run toto with any Rack compliant web server,
|
81
|
+
such as **thin**, **mongrel** or **unicorn**.
|
80
82
|
|
81
83
|
With thin, you would do something like:
|
82
84
|
|
@@ -89,7 +91,8 @@ With unicorn, you can just do:
|
|
89
91
|
#### on heroku
|
90
92
|
|
91
93
|
Toto was designed to work well with heroku:(http://heroku.com), it makes the most out of it's state-of-the-art caching,
|
92
|
-
by setting the _Cache-Control_ and _Etag_ HTTP headers.
|
94
|
+
by setting the _Cache-Control_ and _Etag_ HTTP headers. Deploying on Heroku is really easy, just get the heroku gem,
|
95
|
+
create a heroku app with `heroku create`, and push with `git push heroku master`.
|
93
96
|
|
94
97
|
### configuration
|
95
98
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.3
|
data/test/test_helper.rb
CHANGED
@@ -10,23 +10,29 @@ require 'toto'
|
|
10
10
|
module Riot
|
11
11
|
class Assertion
|
12
12
|
assertion(:includes) do |actual, expected|
|
13
|
-
actual.include?(expected)
|
13
|
+
actual.include?(expected) ? pass : fail("expected #{actual} to include #{expected}")
|
14
14
|
end
|
15
15
|
|
16
16
|
assertion(:includes_html) do |actual, expected|
|
17
17
|
doc = Hpricot.parse(actual)
|
18
18
|
expected = expected.to_a.flatten
|
19
|
-
|
20
|
-
(doc/expected.first).
|
19
|
+
|
20
|
+
if (doc/expected.first).empty?
|
21
|
+
fail("expected #{actual} to contain a <#{expected.first}>")
|
22
|
+
elsif !(doc/expected.first).inner_html.match(expected.last)
|
23
|
+
fail("expected <#{expected.first}> to contain #{expected.last}")
|
24
|
+
else
|
25
|
+
pass
|
26
|
+
end
|
21
27
|
end
|
22
28
|
|
23
29
|
assertion(:includes_elements) do |actual, selector, count|
|
24
30
|
doc = Hpricot.parse(actual)
|
25
|
-
(doc/selector).size == count
|
31
|
+
(doc/selector).size == count ? pass : fail("expected #{actual} to contain #{count} #{selector}(s)")
|
26
32
|
end
|
27
33
|
|
28
34
|
assertion(:within) do |actual, expected|
|
29
|
-
expected.include?(actual)
|
35
|
+
expected.include?(actual) ? pass : fail("expected #{actual} to be within #{expected}")
|
30
36
|
end
|
31
37
|
end
|
32
38
|
end
|
data/test/toto_test.rb
CHANGED
@@ -74,7 +74,7 @@ context Toto do
|
|
74
74
|
context "creating an article" do
|
75
75
|
setup do
|
76
76
|
@config[:markdown] = true
|
77
|
-
@config[:date] = lambda {|t| "the time is #{t}" }
|
77
|
+
@config[:date] = lambda {|t| "the time is #{t.strftime("%Y/%m/%d %H:%M")}" }
|
78
78
|
@config[:summary] = 50
|
79
79
|
end
|
80
80
|
|
@@ -89,7 +89,7 @@ context Toto do
|
|
89
89
|
should("have a title") { topic.title }.equals "Toto & The Wizard of Oz."
|
90
90
|
should("parse the body as markdown") { topic.body }.equals "<h1>Chapter I</h1>\n\n<p>hello, <em>stranger</em>.</p>\n"
|
91
91
|
should("create an appropriate slug") { topic.slug }.equals "toto-and-the-wizard-of-oz"
|
92
|
-
should("set the date") { topic.date }.equals "the time is #{Time.now}"
|
92
|
+
should("set the date") { topic.date }.equals "the time is #{Time.now.strftime("%Y/%m/%d %H:%M")}"
|
93
93
|
should("create a summary") { topic.summary == topic.body }
|
94
94
|
should("have an author") { topic.author }.equals AUTHOR
|
95
95
|
should("have a path") { topic.path }.equals Time.now.strftime("/%Y/%m/%d/toto-and-the-wizard-of-oz/")
|
data/toto.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{toto}
|
8
|
-
s.version = "0.1.
|
8
|
+
s.version = "0.1.3"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["cloudhead"]
|
12
|
-
s.date = %q{2009-
|
12
|
+
s.date = %q{2009-12-16}
|
13
13
|
s.description = %q{the tiniest blog-engine in Oz.}
|
14
14
|
s.email = %q{self@cloudhead.net}
|
15
15
|
s.extra_rdoc_files = [
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: toto
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- cloudhead
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-
|
12
|
+
date: 2009-12-16 00:00:00 -05:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|