trahald 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,3 +1,5 @@
1
1
  language: ruby
2
2
  rvm:
3
3
  - 1.9.3
4
+ services:
5
+ - redis-server
data/Gemfile CHANGED
@@ -2,3 +2,11 @@ source 'https://rubygems.org'
2
2
 
3
3
  # Specify your gem's dependencies in trahald.gemspec
4
4
  gemspec
5
+
6
+ group :git do
7
+ gem 'grit', '~> 2.5.0'
8
+ end
9
+
10
+ group :redis do
11
+ gem 'redis', '~> 3.0.3'
12
+ end
data/README.md CHANGED
@@ -6,12 +6,12 @@ Yet another simple wiki on git.
6
6
 
7
7
  You need:
8
8
 
9
- * git
9
+ * git or redis as backend database.
10
10
  * ruby 1.9.3 (2.0.0 does not work with this wiki by now.)
11
11
  * linux or mac. (now engage in support for windows.)
12
12
 
13
- This project will not support ruby 1.8.7.
14
- it will no longer supported in all senses after June 2013.
13
+ This project does not support ruby 1.8.7.
14
+ It will no longer supported in all senses after June 2013.
15
15
 
16
16
  [http://www.ruby-lang.org/en/news/2011/10/06/plans-for-1-8-7/](Plans for 1.8.7 - ruby-lang.org)
17
17
 
@@ -20,6 +20,43 @@ it will no longer supported in all senses after June 2013.
20
20
  This is just a library.
21
21
  To use Trahald as your wiki, see [3100/a_trahald](https://github.com/3100/a_trahald).
22
22
 
23
+ ## In development
24
+
25
+ ### Preparation
26
+
27
+ ```
28
+ bundle install
29
+ ```
30
+
31
+ By default, Bundler installs git and redis gems. You can use --without option with these groups:
32
+
33
+ * git
34
+ * redis
35
+
36
+ e.g. If you do not need redis gem, add the option:
37
+
38
+ ```
39
+ bundle install --without redis
40
+ ```
41
+
42
+ ### Running App
43
+
44
+ ```
45
+ rackup -p $PORT
46
+ ```
47
+
48
+ By default, Trahald use git. If you want to use redis alternatively, add -E option:
49
+
50
+ ```
51
+ rackup -p $PORT -E "redis"
52
+ ```
53
+
54
+ ### Test
55
+
56
+ ```
57
+ bundle exec rspec
58
+ ```
59
+
23
60
  ## Contributing
24
61
 
25
62
  1. Fork it
@@ -1,7 +1,8 @@
1
1
  # -*- coding: utf-8 -*-
2
- require_relative "trahald/version"
2
+ require_relative "trahald/backend-base"
3
3
  require_relative "trahald/git"
4
- require 'sinatra/base'
4
+ require_relative "trahald/redis-client"
5
+ require_relative "trahald/version"
5
6
 
6
7
  module Trahald
7
8
  require 'kramdown'
@@ -13,10 +14,15 @@ module Trahald
13
14
 
14
15
  class App < Sinatra::Base
15
16
 
16
- configure do
17
+ configure :production, :development, :git do
17
18
  dir = Dir::pwd + "/data"
18
19
  Git::init_repo_if_needed dir
19
- GIT = Git.new dir
20
+ DB = Git.new dir
21
+ end
22
+
23
+ configure :redis do
24
+ url = "redis://localhost:6379"
25
+ DB = RedisClient.new url
20
26
  end
21
27
 
22
28
  get '/' do
@@ -24,7 +30,7 @@ module Trahald
24
30
  end
25
31
 
26
32
  get '/list' do
27
- @keys = GIT.list
33
+ @keys = DB.list
28
34
  slim :list
29
35
  end
30
36
 
@@ -32,7 +38,7 @@ module Trahald
32
38
  puts "edit"
33
39
  puts params[:captures]
34
40
  @name = params[:captures][0]
35
- @body = GIT.body(@name)
41
+ @body = DB.body(@name)
36
42
  @body = "" unless @body
37
43
  slim :edit
38
44
  end
@@ -41,7 +47,7 @@ module Trahald
41
47
  puts "md"
42
48
  puts params[:captures]
43
49
  @name = params[:captures][0]
44
- @body = GIT.body(@name)
50
+ @body = DB.body(@name)
45
51
  puts @body
46
52
  if @body
47
53
  slim :raw, :layout => :raw_layout
@@ -54,7 +60,7 @@ module Trahald
54
60
  get %r{^/(.+?)$} do
55
61
  puts params[:captures]
56
62
  @name = params[:captures][0]
57
- @body = GIT.body(@name)
63
+ @body = DB.body(@name)
58
64
  puts "body:#{@body}"
59
65
  @style = scss :style
60
66
  puts "style:#{@style}"
@@ -77,8 +83,8 @@ module Trahald
77
83
  @message = "update"
78
84
  end
79
85
 
80
- if GIT.add!(@name, @body)
81
- GIT.commit!(@message)
86
+ if DB.add!(@name, @body)
87
+ DB.commit!(@message)
82
88
  end
83
89
 
84
90
  puts @name
@@ -0,0 +1,30 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+ module Trahald
4
+ class BackendBase
5
+ def initialize
6
+ end
7
+
8
+ def add!(name, body)
9
+ raise "Called abstract method: add!"
10
+ end
11
+
12
+ def body(name)
13
+ raise "Called abstract method: body"
14
+ end
15
+
16
+ def commit!(message)
17
+ raise "Called abstract method: commit!"
18
+ end
19
+
20
+ def list
21
+ raise "Called abstract method: list"
22
+ end
23
+
24
+ def self.init_repo_if_needed(dir)
25
+ raise "Called abstract method: self.init_repo_if_needed"
26
+ end
27
+ end
28
+ end
29
+
30
+
@@ -3,7 +3,7 @@
3
3
  module Trahald
4
4
  require 'grit'
5
5
 
6
- class Git
6
+ class Git < BackendBase
7
7
  def initialize(repo_path, ext="md")
8
8
  @repo_dir = repo_path
9
9
  @ext = ext
@@ -0,0 +1,49 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+ module Trahald
4
+ require 'redis'
5
+ require 'uri'
6
+
7
+ class RedisClient < BackendBase
8
+ def initialize(url)
9
+ uri = URI.parse url
10
+ @redis = Redis.new(
11
+ :host => uri.host,
12
+ :port => uri.port
13
+ )
14
+
15
+ @params = Hash::new
16
+ end
17
+
18
+ # This method does not set data to Redis DB. To confirm, use commit! after add!.
19
+ def add!(name, body)
20
+ @params[name] = body
21
+ end
22
+
23
+ def body(name)
24
+ @redis.get name
25
+ end
26
+
27
+ # message is not used.
28
+ def commit!(message)
29
+ @params.each{|name, body|
30
+ @redis.set(name, body)
31
+ }
32
+ end
33
+
34
+ # CAUTION! This method flush data on current db.
35
+ def flush!
36
+ @redis.flushdb
37
+ end
38
+
39
+ def list
40
+ @redis.keys.sort
41
+ end
42
+
43
+ def self.init_repo_if_needed(dir)
44
+ # do nothing.
45
+ end
46
+ end
47
+ end
48
+
49
+
@@ -1,3 +1,3 @@
1
1
  module Trahald
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.4"
3
3
  end
@@ -0,0 +1,46 @@
1
+ # -*- coding: utf-8 -*-
2
+ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
3
+
4
+ describe "Trahald::RedisClient" do
5
+ before(:all) do
6
+ @url = "redis://localhost:6379/"
7
+ @redis = Trahald::RedisClient.new(@url)
8
+ @redis.flush!
9
+ end
10
+
11
+ it "should contains no data at first" do
12
+ @redis.list.should == []
13
+ end
14
+
15
+ it "should enable to save some data." do
16
+ name1 = "sample"
17
+ body1 = "# title\n\n* hoge\n* huga\n* 123"
18
+ name2 = "サンプル"
19
+ body2 = "# タイトル\n\n* いち\n* に\n* さん"
20
+ name3 = "サンプル/初夢"
21
+ body3 = "# タイトル\n\n* 富士\n* 鷹\n* なすび"
22
+ @redis.add!(name1, body1)
23
+ @redis.add!(name2, body2)
24
+ @redis.add!(name3, body3)
25
+ message = "コミット"
26
+
27
+ @redis.commit!(message).should be_true
28
+ @redis.body(name1).should == body1
29
+ @redis.body(name2).should == body2
30
+ @redis.body(name3).should == body3
31
+ end
32
+
33
+ it "should enable to output list." do
34
+ @redis.list.should == ['sample', 'サンプル', 'サンプル/初夢']
35
+ end
36
+
37
+ it "should enable to flush data" do
38
+ @redis.flush!
39
+ @redis.list.should == []
40
+ end
41
+
42
+ after(:all) do
43
+ end
44
+ end
45
+
46
+
@@ -17,7 +17,6 @@ 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('grit', '~> 2.5.0')
21
20
  gem.add_dependency('kramdown', '~> 0.14.2')
22
21
  gem.add_dependency('sass', '~>3.2.6')
23
22
  gem.add_dependency('sinatra', '~>1.3.5')
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: trahald
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -11,22 +11,6 @@ bindir: bin
11
11
  cert_chain: []
12
12
  date: 2013-03-06 00:00:00.000000000 Z
13
13
  dependencies:
14
- - !ruby/object:Gem::Dependency
15
- name: grit
16
- requirement: !ruby/object:Gem::Requirement
17
- none: false
18
- requirements:
19
- - - ~>
20
- - !ruby/object:Gem::Version
21
- version: 2.5.0
22
- type: :runtime
23
- prerelease: false
24
- version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
- requirements:
27
- - - ~>
28
- - !ruby/object:Gem::Version
29
- version: 2.5.0
30
14
  - !ruby/object:Gem::Dependency
31
15
  name: kramdown
32
16
  requirement: !ruby/object:Gem::Requirement
@@ -138,7 +122,9 @@ files:
138
122
  - Rakefile
139
123
  - config.ru
140
124
  - lib/trahald.rb
125
+ - lib/trahald/backend-base.rb
141
126
  - lib/trahald/git.rb
127
+ - lib/trahald/redis-client.rb
142
128
  - lib/trahald/version.rb
143
129
  - lib/views/edit.slim
144
130
  - lib/views/index.slim
@@ -149,6 +135,7 @@ files:
149
135
  - lib/views/raw_layout.slim
150
136
  - lib/views/style.scss
151
137
  - spec/git_spec.rb
138
+ - spec/redis-client_spec.rb
152
139
  - spec/spec_helper.rb
153
140
  - trahald.gemspec
154
141
  homepage: ''
@@ -165,7 +152,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
165
152
  version: '0'
166
153
  segments:
167
154
  - 0
168
- hash: -182653521
155
+ hash: -233894239
169
156
  required_rubygems_version: !ruby/object:Gem::Requirement
170
157
  none: false
171
158
  requirements:
@@ -174,13 +161,14 @@ required_rubygems_version: !ruby/object:Gem::Requirement
174
161
  version: '0'
175
162
  segments:
176
163
  - 0
177
- hash: -182653521
164
+ hash: -233894239
178
165
  requirements: []
179
166
  rubyforge_project:
180
- rubygems_version: 1.8.25
167
+ rubygems_version: 1.8.24
181
168
  signing_key:
182
169
  specification_version: 3
183
170
  summary: a simple wiki on git
184
171
  test_files:
185
172
  - spec/git_spec.rb
173
+ - spec/redis-client_spec.rb
186
174
  - spec/spec_helper.rb