nwiki 0.1.3 → 0.1.4

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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: a4af7ee8548ac25f7892bd7699217b0f6b672876
4
+ data.tar.gz: 40a584882c9bb6e9fe52f53eab247331c1a175d9
5
+ SHA512:
6
+ metadata.gz: 2e3c928266ce7eb664e99cf80308b5faaaedfedaeee2992c9df005dbf9cf45eaeda823dc5682866a5313f9015a322fcbdd6143b2ea682fe596be7446c9706330
7
+ data.tar.gz: 7e27e2dc6ca1bb1280f85a4b3cd8ad5e509114d4d83e0bc62243a2bf1e5c0714dd7e5aae0fc1b59d0f65763cc38ed01e6327b452c8a9572c56e338fa0f1b422f
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- 1.9.3-p362
1
+ 2.0.0-p247
data/.travis.yml CHANGED
@@ -1 +1 @@
1
- rvm: 1.9.3
1
+ rvm: 2.0.0
data/CHANGELOG.org CHANGED
@@ -1,4 +1,8 @@
1
1
  * CHANGELOG
2
+ ** 0.1.4
3
+ - [feature] remove dependency of `gollum-lib`
4
+ - [feature] work on Ruby2.0
5
+ - [feature] optimize rendering for smartphone
2
6
  ** 0.1.3
3
7
  - [feature] apply twitter bootstrap 3 style
4
8
  - [fix] fix mime-type when render 404(Not Found) page
data/Gemfile CHANGED
@@ -3,4 +3,5 @@ source 'https://rubygems.org'
3
3
  # Specify your gem's dependencies in nwiki.gemspec
4
4
  gemspec
5
5
 
6
+ gem 'rugged', git: 'git://github.com/libgit2/rugged.git', branch: 'development', submodules: true
6
7
  gem 'coveralls', require: false
@@ -1,8 +1,104 @@
1
- require 'gollum-lib'
1
+ require 'rugged'
2
+ require 'forwardable'
2
3
 
3
4
  module Nwiki
4
5
  module Core
5
- # copy from gollum
6
- GitAccess = ::Gollum::GitAccess
6
+ class Entry
7
+ extend Forwardable
8
+
9
+ attr_reader :path
10
+
11
+ def initialize path, blob_object
12
+ @path = path
13
+ @blob_object = blob_object
14
+ end
15
+
16
+ def text
17
+ @blob_object.text.force_encoding('UTF-8')
18
+ end
19
+
20
+ def_delegators :@blob_object, :size, :content, :binary?
21
+ end
22
+
23
+ class Diff
24
+ extend Forwardable
25
+
26
+ attr_reader :time
27
+
28
+ def initialize entry, time
29
+ @entry = entry
30
+ @time = time
31
+ end
32
+
33
+ def_delegators :@entry, :size, :content, :text, :binary?, :path
34
+ end
35
+
36
+ class GitAccess
37
+ def initialize repo_path
38
+ @repo = Rugged::Repository.new(::File.expand_path(repo_path))
39
+ end
40
+
41
+ def config
42
+ Rugged::Branch.lookup(@repo, 'config')
43
+ end
44
+
45
+ def title
46
+ title_entry = config.tip.tree.get_entry('title')
47
+ title_blob = @repo.lookup(title_entry[:oid])
48
+ title_blob.text.chomp.force_encoding('UTF-8')
49
+ end
50
+
51
+ def subtitle
52
+ subtitle_entry = config.tip.tree.get_entry('subtitle')
53
+ subtitle_blob = @repo.lookup(subtitle_entry[:oid])
54
+ subtitle_blob.text.chomp.force_encoding('UTF-8')
55
+ end
56
+
57
+ def author
58
+ author_entry = config.tip.tree.get_entry('author')
59
+ author_blob = @repo.lookup(author_entry[:oid])
60
+ author_blob.text.chomp.force_encoding('UTF-8')
61
+ end
62
+
63
+ def find_file
64
+ target = @repo.head.target
65
+ @repo.lookup(target).tree.walk_blobs do |path, object|
66
+ fullpath = path + object[:name]
67
+ if yield(fullpath)
68
+ return Entry.new(fullpath, @repo.lookup(object[:oid]))
69
+ end
70
+ end
71
+ end
72
+
73
+ def all_files
74
+ [].tap do |result|
75
+ target = @repo.head.target
76
+ @repo.lookup(target).tree.walk_blobs do |path, object|
77
+ fullpath = path + object[:name]
78
+ result << Entry.new(fullpath, @repo.lookup(object[:oid]))
79
+ end
80
+ end
81
+ end
82
+
83
+ def log
84
+ walker = Rugged::Walker.new(@repo).tap do |w|
85
+ w.sorting(Rugged::SORT_DATE) # new -> old
86
+ w.push(@repo.head.target)
87
+ end
88
+ [].tap do |result|
89
+ walker.walk.each do |commit|
90
+ commit_time = Time.at(commit.epoch_time)
91
+ parent = commit.parents.first
92
+ next unless parent
93
+ diff = parent.diff(commit)
94
+ diff.deltas.reject(&:deleted?).each do |delta|
95
+ new_file_object = delta.new_file
96
+ path = new_file_object[:path].force_encoding('UTF-8')
97
+ result << Diff.new(Entry.new(path, @repo.lookup(new_file_object[:oid])), commit_time)
98
+ end
99
+ end
100
+ end
101
+ end
102
+ end
7
103
  end
8
104
  end
@@ -1,4 +1,5 @@
1
1
  require 'rack'
2
+ require 'org-ruby'
2
3
 
3
4
  module Nwiki
4
5
  module Core
@@ -16,8 +17,6 @@ module Nwiki
16
17
  unescaped_path.sub(/^\//, '')
17
18
  end
18
19
 
19
- attr_reader :access
20
-
21
20
  def initialize path
22
21
  @path = path
23
22
  @access = GitAccess.new(path)
@@ -33,57 +32,38 @@ module Nwiki
33
32
  end
34
33
 
35
34
  def find_page_or_file path
36
- blob_entry = @access
37
- .tree('master')
38
- .find { |e| path == e.path.sub(/\.org$/){ '' } }
39
- return nil unless blob_entry
40
- byte_string = blob_entry.blob(@access.repo).data
41
- if blob_entry.name =~ /\.org$/
42
- byte_string.force_encoding(self.class.repo_filename_encoding)
43
- Page.new(::File.basename(blob_entry.name, '.org'), byte_string, self.class.parser)
35
+ entry = @access.find_file do |entry_path|
36
+ path == entry_path.sub(/\.org$/){ '' }
37
+ end
38
+ return nil unless entry
39
+ if entry.path =~ /\.org$/
40
+ path = entry.path.sub(/\.org$/){ '' }
41
+ Page.new(path, entry.text, self.class.parser)
44
42
  else
45
- File.new(blob_entry.name, byte_string)
43
+ File.new(entry.path, entry.content)
46
44
  end
47
45
  end
48
46
 
49
47
  def find_directory path
50
- sha = @access.tree('master')
48
+ files = @access.all_files
51
49
  Directory.encoding = self.class.repo_filename_encoding
52
- Directory.new(path, sha.map(&:path))
50
+ Directory.new(path, files.map(&:path))
53
51
  end
54
52
 
55
53
  def title
56
- blob_entry = @access
57
- .tree('config')
58
- .find { |e| e.path == 'title' }
59
- return '' unless blob_entry
60
- byte_string = blob_entry.blob(@access.repo).data
61
- byte_string.force_encoding(self.class.repo_filename_encoding)
62
- byte_string.chomp
54
+ @access.title
63
55
  end
64
56
 
65
57
  def subtitle
66
- blob_entry = @access
67
- .tree('config')
68
- .find { |e| e.path == 'subtitle' }
69
- return '' unless blob_entry
70
- byte_string = blob_entry.blob(@access.repo).data
71
- byte_string.force_encoding(self.class.repo_filename_encoding)
72
- byte_string.chomp
58
+ @access.subtitle
73
59
  end
74
60
 
75
61
  def author
76
- blob_entry = @access
77
- .tree('config')
78
- .find { |e| e.path == 'author' }
79
- return '' unless blob_entry
80
- byte_string = blob_entry.blob(@access.repo).data
81
- byte_string.force_encoding(self.class.repo_filename_encoding)
82
- byte_string.chomp
62
+ @access.author
83
63
  end
84
64
 
85
- def exist?
86
- @access.exist?
65
+ def log
66
+ @access.log
87
67
  end
88
68
  end
89
69
  end
@@ -7,7 +7,6 @@ module Nwiki
7
7
 
8
8
  def initialize git_repo_path, opts = {}
9
9
  @wiki = Nwiki::Core::Wiki.new git_repo_path
10
- raise unless @wiki.exist?
11
10
  @articles_path = opts[:articles_path] || ''
12
11
  end
13
12
 
@@ -22,42 +21,27 @@ module Nwiki
22
21
  maker.channel.link = Rack::Request.new(env).url
23
22
 
24
23
  maker.channel.author = @wiki.author
25
- maker.channel.date = latest_update
24
+ maker.channel.date = @wiki.log.max_by(&:time).time
26
25
  maker.channel.id = Rack::Request.new(env).url
27
26
 
28
27
  maker.items.do_sort = true
29
28
  maker.items.max_size = 50
30
29
 
31
- log = @wiki.access.repo.log
32
- log.each do |commit|
33
- date = commit.date
34
- commit.show.each do |diff|
35
- next unless diff.new_file
30
+ @wiki.log.each do |diff|
31
+ path = Nwiki::Core::Wiki.canonicalize_path(diff.path)
32
+ next if path =~ /\.gif|png|jpg$/ # FIXME Don't display binary file at feed
33
+ path.gsub!(/\.org$/, '')
36
34
 
37
- path = Nwiki::Core::Wiki.canonicalize_path(diff.b_path)
38
- path.gsub!(/\.org$/, '')
39
-
40
- maker.items.new_item do |item|
41
- item.link = Rack::Request.new(env).url.gsub(Regexp.new(Rack::Request.new(env).fullpath), "#{articles_path}/#{path}")
42
- item.title = File.basename(path)
43
- item.date = date
44
- end
35
+ maker.items.new_item do |item|
36
+ item.link = Rack::Request.new(env).url.gsub(Regexp.new(Rack::Request.new(env).fullpath), "#{articles_path}/#{path}")
37
+ item.title = path
38
+ item.date = diff.time
45
39
  end
46
40
  end
47
41
  }.to_s
48
42
  ]
49
43
  ]
50
44
  end
51
-
52
- private
53
- def latest_update
54
- log = @wiki.access.repo.log
55
- latest_update = Time.parse('1900-01-01')
56
- log.each do |commit|
57
- latest_update = commit.date if commit.date > latest_update
58
- end
59
- latest_update
60
- end
61
45
  end
62
46
  end
63
47
  end
@@ -5,7 +5,6 @@ module Nwiki
5
5
  class Html
6
6
  def initialize git_repo_path
7
7
  @wiki = Nwiki::Core::Wiki.new git_repo_path
8
- raise unless @wiki.exist?
9
8
  end
10
9
 
11
10
  def call env
@@ -27,11 +26,10 @@ module Nwiki
27
26
  <html>
28
27
  <head>
29
28
  <title><%= page.title %> - <%= @wiki.title %></title>
29
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
30
30
  <link rel="alternate" type="application/atom+xml" title="ATOM Feed" href="/articles.xml">
31
- <script src="//ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
32
31
  <link rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css">
33
32
  <link rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap-theme.min.css">
34
- <script src="//netdna.bootstrapcdn.com/bootstrap/3.0.0/js/bootstrap.min.js"></script>
35
33
  </head>
36
34
  <body>
37
35
  <div class="container">
@@ -45,6 +43,8 @@ module Nwiki
45
43
  </div>
46
44
  </div>
47
45
  </div>
46
+ <script src="//ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
47
+ <script src="//netdna.bootstrapcdn.com/bootstrap/3.0.0/js/bootstrap.min.js"></script>
48
48
  </body>
49
49
  </html>
50
50
  EOS
@@ -23,11 +23,10 @@ module Nwiki
23
23
  <head>
24
24
  <meta http-equiv="refresh" content="5;URL=http://niku.name/articles/">
25
25
  <title><%= @wiki.title %></title>
26
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
26
27
  <link rel="alternate" type="application/atom+xml" title="ATOM Feed" href="/articles.xml">
27
- <script src="//ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
28
28
  <link rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css">
29
29
  <link rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap-theme.min.css">
30
- <script src="//netdna.bootstrapcdn.com/bootstrap/3.0.0/js/bootstrap.min.js"></script>
31
30
  </head>
32
31
  <body>
33
32
  <div class="container">
@@ -42,6 +41,8 @@ module Nwiki
42
41
  </div>
43
42
  </div>
44
43
  </div>
44
+ <script src="//ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
45
+ <script src="//netdna.bootstrapcdn.com/bootstrap/3.0.0/js/bootstrap.min.js"></script>
45
46
  </body>
46
47
  </html>
47
48
  EOS
data/lib/nwiki/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Nwiki
2
- VERSION = '0.1.3'
2
+ VERSION = '0.1.4'
3
3
  end
data/nwiki.gemspec CHANGED
@@ -15,7 +15,6 @@ Gem::Specification.new do |gem|
15
15
  gem.require_paths = ['lib']
16
16
  gem.version = Nwiki::VERSION
17
17
 
18
- gem.add_dependency('gollum-lib')
19
18
  gem.add_dependency('rack')
20
19
  gem.add_dependency('org-ruby')
21
20
 
@@ -1,3 +1,4 @@
1
+ # -*- coding: utf-8 -*-
1
2
  require 'spec_helper'
2
3
 
3
4
  module Nwiki
@@ -7,10 +8,38 @@ module Nwiki
7
8
 
8
9
  subject { described_class.new(path) }
9
10
 
10
- describe '#tree' do
11
- let(:ref) { '63c0856958172223da3309e653f837a3485be4ae' }
11
+ describe '#title' do
12
+ it { expect(subject.title).to eq 'ヽ(´・肉・`)ノログ' }
13
+ end
14
+
15
+ describe '#subtitle' do
16
+ it { expect(subject.subtitle).to eq 'How do we fighting without fighting?' }
17
+ end
18
+
19
+ describe '#author' do
20
+ it { expect(subject.author).to eq 'niku' }
21
+ end
22
+
23
+ describe '#find_file' do
24
+ it { expect(subject.find_file { |path| path == '1/2/b.org' }.text).to eq "* b\n\n" }
25
+ end
26
+
27
+ describe '#all_files' do
28
+ subject { super().all_files }
29
+
30
+ it { expect(subject).to have(5).items }
31
+ it { expect(subject.first).to be_kind_of Entry}
32
+ it { expect(subject.first.path).to eq '1/2/a.org'}
33
+ end
34
+
35
+ describe '#log' do
36
+ subject { super().log }
12
37
 
13
- it { subject.tree(ref).should have_at_least(1).blob_entries }
38
+ it { expect(subject).to be_kind_of Enumerable }
39
+ it { expect(subject.first.path).to eq 'foo.org' }
40
+ it { expect(subject.first.time).to eq Time.parse('2012-08-09 20:15:07 +0900') }
41
+ it { expect(subject.last.path).to eq '1/2/b.org' }
42
+ it { expect(subject.last.time).to eq Time.parse('2012-06-14 21:55:15 +0900') }
14
43
  end
15
44
  end
16
45
  end
@@ -45,10 +45,10 @@ module Nwiki
45
45
  it { subject.title.content.should eq 'ヽ(´・肉・`)ノログ' }
46
46
  it { subject.subtitle.content.should eq 'How do we fighting without fighting?' }
47
47
  it { subject.author.name.content.should eq 'niku' }
48
- it { subject.date.should eq Time.parse('2013-02-07 23:25:44 +0900') }
48
+ it { subject.date.should eq Time.parse('2012-08-09 20:15:07 +0900') }
49
49
  it { subject.id.content.should eq 'http://example.org/articles.xml' }
50
- it { subject.items.first.link.href.should eq 'http://example.org/articles/icon.png' }
51
- it { subject.items.first.title.content.should eq "icon.png" }
50
+ it { subject.items.first.link.href.should eq 'http://example.org/articles/foo' }
51
+ it { subject.items.first.title.content.should eq 'foo' }
52
52
  it { subject.items.first.date.should eq Time.parse('2012-08-09 20:15:07 +0900') }
53
53
  end
54
54
 
@@ -59,6 +59,7 @@ module Nwiki
59
59
  let(:path) { '/articles/foo' }
60
60
 
61
61
  it { subject.should be_ok }
62
+ it { subject.should match %r!<title[^>]*>foo - ヽ(´・肉・`)ノログ</title>!}
62
63
  it { subject.should match %r!<h2[^>]*>Foo</h2>! }
63
64
  it { subject.should match %r!<h3[^>]*>Bar</h3>! }
64
65
  end
@@ -92,6 +93,7 @@ module Nwiki
92
93
  let(:path) { URI.encode '/articles/日本語ディレクトリ/わたしだ' }
93
94
 
94
95
  it { subject.should be_ok }
96
+ it { subject.body.should match %r!<title[^>]*>日本語ディレクトリ/わたしだ - ヽ(´・肉・`)ノログ</title>!}
95
97
  it { subject.body.should match %r!<h2[^>]*>お前だったのか</h2>! }
96
98
  it { subject.body.should match %r!<h3[^>]*>気づかなかったな</h3>! }
97
99
  end
metadata CHANGED
@@ -1,158 +1,125 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nwiki
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
5
- prerelease:
4
+ version: 0.1.4
6
5
  platform: ruby
7
6
  authors:
8
7
  - niku
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-09-09 00:00:00.000000000 Z
11
+ date: 2013-10-09 00:00:00.000000000 Z
13
12
  dependencies:
14
- - !ruby/object:Gem::Dependency
15
- name: gollum-lib
16
- requirement: !ruby/object:Gem::Requirement
17
- none: false
18
- requirements:
19
- - - ! '>='
20
- - !ruby/object:Gem::Version
21
- version: '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: '0'
30
13
  - !ruby/object:Gem::Dependency
31
14
  name: rack
32
15
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
16
  requirements:
35
- - - ! '>='
17
+ - - '>='
36
18
  - !ruby/object:Gem::Version
37
19
  version: '0'
38
20
  type: :runtime
39
21
  prerelease: false
40
22
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
23
  requirements:
43
- - - ! '>='
24
+ - - '>='
44
25
  - !ruby/object:Gem::Version
45
26
  version: '0'
46
27
  - !ruby/object:Gem::Dependency
47
28
  name: org-ruby
48
29
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
30
  requirements:
51
- - - ! '>='
31
+ - - '>='
52
32
  - !ruby/object:Gem::Version
53
33
  version: '0'
54
34
  type: :runtime
55
35
  prerelease: false
56
36
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
37
  requirements:
59
- - - ! '>='
38
+ - - '>='
60
39
  - !ruby/object:Gem::Version
61
40
  version: '0'
62
41
  - !ruby/object:Gem::Dependency
63
42
  name: rake
64
43
  requirement: !ruby/object:Gem::Requirement
65
- none: false
66
44
  requirements:
67
- - - ! '>='
45
+ - - '>='
68
46
  - !ruby/object:Gem::Version
69
47
  version: '0'
70
48
  type: :development
71
49
  prerelease: false
72
50
  version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
51
  requirements:
75
- - - ! '>='
52
+ - - '>='
76
53
  - !ruby/object:Gem::Version
77
54
  version: '0'
78
55
  - !ruby/object:Gem::Dependency
79
56
  name: rspec
80
57
  requirement: !ruby/object:Gem::Requirement
81
- none: false
82
58
  requirements:
83
- - - ! '>='
59
+ - - '>='
84
60
  - !ruby/object:Gem::Version
85
61
  version: '0'
86
62
  type: :development
87
63
  prerelease: false
88
64
  version_requirements: !ruby/object:Gem::Requirement
89
- none: false
90
65
  requirements:
91
- - - ! '>='
66
+ - - '>='
92
67
  - !ruby/object:Gem::Version
93
68
  version: '0'
94
69
  - !ruby/object:Gem::Dependency
95
70
  name: rack-test
96
71
  requirement: !ruby/object:Gem::Requirement
97
- none: false
98
72
  requirements:
99
- - - ! '>='
73
+ - - '>='
100
74
  - !ruby/object:Gem::Version
101
75
  version: '0'
102
76
  type: :development
103
77
  prerelease: false
104
78
  version_requirements: !ruby/object:Gem::Requirement
105
- none: false
106
79
  requirements:
107
- - - ! '>='
80
+ - - '>='
108
81
  - !ruby/object:Gem::Version
109
82
  version: '0'
110
83
  - !ruby/object:Gem::Dependency
111
84
  name: guard
112
85
  requirement: !ruby/object:Gem::Requirement
113
- none: false
114
86
  requirements:
115
- - - ! '>='
87
+ - - '>='
116
88
  - !ruby/object:Gem::Version
117
89
  version: '0'
118
90
  type: :development
119
91
  prerelease: false
120
92
  version_requirements: !ruby/object:Gem::Requirement
121
- none: false
122
93
  requirements:
123
- - - ! '>='
94
+ - - '>='
124
95
  - !ruby/object:Gem::Version
125
96
  version: '0'
126
97
  - !ruby/object:Gem::Dependency
127
98
  name: guard-rspec
128
99
  requirement: !ruby/object:Gem::Requirement
129
- none: false
130
100
  requirements:
131
- - - ! '>='
101
+ - - '>='
132
102
  - !ruby/object:Gem::Version
133
103
  version: '0'
134
104
  type: :development
135
105
  prerelease: false
136
106
  version_requirements: !ruby/object:Gem::Requirement
137
- none: false
138
107
  requirements:
139
- - - ! '>='
108
+ - - '>='
140
109
  - !ruby/object:Gem::Version
141
110
  version: '0'
142
111
  - !ruby/object:Gem::Dependency
143
112
  name: ruby_gntp
144
113
  requirement: !ruby/object:Gem::Requirement
145
- none: false
146
114
  requirements:
147
- - - ! '>='
115
+ - - '>='
148
116
  - !ruby/object:Gem::Version
149
117
  version: '0'
150
118
  type: :development
151
119
  prerelease: false
152
120
  version_requirements: !ruby/object:Gem::Requirement
153
- none: false
154
121
  requirements:
155
- - - ! '>='
122
+ - - '>='
156
123
  - !ruby/object:Gem::Version
157
124
  version: '0'
158
125
  description: Write a gem description
@@ -252,33 +219,26 @@ files:
252
219
  - spec/spec_helper.rb
253
220
  homepage: ''
254
221
  licenses: []
222
+ metadata: {}
255
223
  post_install_message:
256
224
  rdoc_options: []
257
225
  require_paths:
258
226
  - lib
259
227
  required_ruby_version: !ruby/object:Gem::Requirement
260
- none: false
261
228
  requirements:
262
- - - ! '>='
229
+ - - '>='
263
230
  - !ruby/object:Gem::Version
264
231
  version: '0'
265
- segments:
266
- - 0
267
- hash: 2850042242604829177
268
232
  required_rubygems_version: !ruby/object:Gem::Requirement
269
- none: false
270
233
  requirements:
271
- - - ! '>='
234
+ - - '>='
272
235
  - !ruby/object:Gem::Version
273
236
  version: '0'
274
- segments:
275
- - 0
276
- hash: 2850042242604829177
277
237
  requirements: []
278
238
  rubyforge_project:
279
- rubygems_version: 1.8.23
239
+ rubygems_version: 2.0.3
280
240
  signing_key:
281
- specification_version: 3
241
+ specification_version: 4
282
242
  summary: Write a gem summary
283
243
  test_files:
284
244
  - spec/examples/sample.git/HEAD