epub-search 0.0.1 → 0.0.2

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a0e5eaac93572491de5dfb8b483d996daf3f2798
4
- data.tar.gz: 12fd51e95e4ca7291b92ca3d10f8b5f43c76331c
3
+ metadata.gz: 536544d7de71e3a8248d0dfde581b2cf23a32cc1
4
+ data.tar.gz: dea71df17f48c5d10fa7b767904259db9021a057
5
5
  SHA512:
6
- metadata.gz: 7bab11cd12dc7f248b8dcc3f990e45c3d7c77a798750fa0eb2b88e4c915b7926675b4c6e3d73b79bc9ad21106350cdab9c34e88f6c3e2726c0dcb38ed5cf622f
7
- data.tar.gz: 64882ff476229d0841e126b9fb65c986a100e551fd39ccc0651845c0ad443eef0c554047ffac43a3f143d93e96d6fff8b230d9b77d55abba7abadb3754b45ac8
6
+ metadata.gz: 5d77aeba6dfcaff267d8e15577ad0fc5438039cabbb1badee432456906b4b3be780fcca4ea8be15235286205e34efa929bfa85526a1b0c49a927a49292aad345
7
+ data.tar.gz: 42f255473c9386d092b1d1d6b15cbfd081b729abf4a694321302c845e3778e14c807a65e108343c2f0a4cdb63d1718aeece69c0b3be3a6787a1d85d16565d7f3
@@ -0,0 +1,13 @@
1
+ Change Log
2
+ ==========
3
+
4
+ 0.0.2
5
+ -----
6
+ * Ruby vertion limited to 2.0
7
+ * Database directory changed
8
+ * Exec `epub-search init` again
9
+ * Pid file is used to avoid multiple processes are running at once for epub-search watch
10
+
11
+ 0.0.1
12
+ -----
13
+ * First release
data/README.markdown CHANGED
@@ -15,7 +15,7 @@ Usage
15
15
  Commands:
16
16
  epub-search add FILE # Add FILE to database
17
17
  epub-search help [COMMAND] # Describe available commands or one specific command
18
- epub-search init [DB_DIR] # Setup database
18
+ epub-search init [DIR] # Setup database
19
19
  epub-search list # Show list of book titles in database
20
20
  epub-search remove FILE # Remove FILE from database
21
21
  epub-search search WORD [BOOK] # Search WORD in book whose title is like BOOK from database
@@ -40,9 +40,18 @@ EPUB Search(`epub-search` command) detectes configuration file following by this
40
40
 
41
41
  Configuration file should be written as YAML and you can set properties below:
42
42
 
43
- * :db_dir: String. Groonga database directory, defaults to $HOME/.epub-search/db
43
+ * :dir: String. Directory for Groonga database and other files, defaults to $HOME/.epub-search/db
44
44
  * :directories: Array of String. Directories `watch` subcommand watches.
45
45
 
46
+ ChangeLog
47
+ ---------
48
+
49
+ ### 0.0.2
50
+ * Ruby vertion limited to 2.0
51
+ * Database directory changed
52
+ * Exec `epub-search init` again
53
+ * Pid file is used to avoid multiple processes are running at once for epub-search watch
54
+
46
55
  Contributing
47
56
  ------------
48
57
 
data/Rakefile CHANGED
@@ -5,5 +5,7 @@ require 'bundler/gem_tasks'
5
5
 
6
6
  task :default => :test
7
7
 
8
- Rake::TestTask.new
8
+ Rake::TestTask.new do |t|
9
+ t.options = '--verbose'
10
+ end
9
11
  YARD::Rake::YardocTask.new
data/app/add.rb CHANGED
@@ -1,8 +1,8 @@
1
1
  class Add
2
- def initialize(db_dir, file_path)
2
+ def initialize(dir, file_path)
3
3
  @file_path = Pathname.new(file_path)
4
4
  raise "File not readable: #{@file_path}" unless @file_path.readable?
5
- @db = EPUB::Search::Database.new(db_dir)
5
+ @db = EPUB::Search::Database.new(File.join(dir, EPUB::Search::Database::DIR_NAME))
6
6
  end
7
7
 
8
8
  def run(update=true)
data/app/init.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  class Init
2
- def initialize(db_dir)
3
- @db = EPUB::Search::Database.new(db_dir)
2
+ def initialize(dir)
3
+ @db = EPUB::Search::Database.new(File.join(dir, EPUB::Search::Database::DIR_NAME))
4
4
  end
5
5
 
6
6
  def run(force=false)
data/app/list.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  class List
2
- def initialize(db_dir)
3
- @db= EPUB::Search::Database.new(db_dir)
2
+ def initialize(dir)
3
+ @db= EPUB::Search::Database.new(File.join(dir, EPUB::Search::Database::DIR_NAME))
4
4
  end
5
5
 
6
6
  def run(path=false)
data/app/remove.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  class Remove
2
- def initialize(db_dir, file_path)
2
+ def initialize(dir, file_path)
3
3
  @file_path = Pathname(file_path)
4
- @db = EPUB::Search::Database.new(db_dir)
4
+ @db = EPUB::Search::Database.new(File.join(dir, EPUB::Search::Database::DIR_NAME))
5
5
  end
6
6
 
7
7
  def run
data/app/search.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  class Search
2
- def initialize(db_dir, search_word, book=nil)
2
+ def initialize(dir, search_word, book=nil)
3
3
  @word, @book = search_word, book
4
- @db = EPUB::Search::Database.new(db_dir)
4
+ @db = EPUB::Search::Database.new(File.join(dir, EPUB::Search::Database::DIR_NAME))
5
5
  end
6
6
 
7
7
  def run(color=$stdout.tty?)
data/app/server.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  class Server
2
- def initialize(db_dir)
3
- @db = EPUB::Search::Database.new(db_dir)
2
+ def initialize(dir)
3
+ @db = EPUB::Search::Database.new(File.join(dir, EPUB::Search::Database::DIR_NAME))
4
4
  end
5
5
 
6
6
  def run
data/app/watch.rb CHANGED
@@ -2,19 +2,30 @@ require 'notify'
2
2
 
3
3
  class Watch
4
4
  EPUB_RE = /\.epub\Z/io
5
+ PID_FILE_NAME = 'epub-search.pid'
5
6
 
6
- def initialize(db_file, directories)
7
+ def initialize(work_dir, directories)
7
8
  raise ArgumentError, 'specify at least one directory' if directories.empty?
8
- @directories = directories
9
- @db = EPUB::Search::Database.new(db_file)
9
+ @work_dir = Pathname === work_dir ? work_dir : Pathname.new(work_dir)
10
+ @directories = directories.map {|dir| File.expand_path(dir)}
11
+ @db = EPUB::Search::Database.new(File.join(@work_dir.to_path, EPUB::Search::Database::DIR_NAME))
10
12
  end
11
13
 
12
- def run
14
+ def run(notify_on_change: true, daemonize: false, debug: false)
15
+ @notify, @daemonize, @debug = notify_on_change, daemonize, debug
16
+ if @debug
17
+ $stderr.puts "notify_on_change: #{@notify}"
18
+ $stderr.puts "daemonize: #{@daemonize}"
19
+ $stderr.puts "debug: #{@debug}"
20
+ end
21
+
13
22
  $PROGRAM_NAME = File.basename($PROGRAM_NAME)
14
23
  $stderr.puts 'start to watch:'
15
24
  @directories.each do |dir|
16
25
  $stderr.puts " * #{dir}"
17
26
  end
27
+ Process.daemon if @daemonize
28
+ write_pid_file
18
29
  catch_up
19
30
  begin
20
31
  Listen.to *@directories, :filter => EPUB_RE do |modified, added, removed|
@@ -22,12 +33,16 @@ class Watch
22
33
  next unless file_path =~ EPUB_RE
23
34
  file_path.force_encoding 'UTF-8'
24
35
  begin
36
+ $stderr.puts "remove #{file_path}"
25
37
  @db.remove file_path
38
+ $stderr.puts "add #{file_path}"
26
39
  @db.add file_path
27
40
  title = EPUB::Parser.parse(file_path).title
28
41
  notify %Q|UPDATED: #{title}\n#{file_path}|
42
+ FileUtils.touch exit_time_file
29
43
  rescue => error
30
44
  $stderr.puts error
45
+ $stderr.puts error.backtrace if @debug
31
46
  end
32
47
  end
33
48
  added.each do |file_path|
@@ -37,8 +52,10 @@ class Watch
37
52
  @db.add file_path
38
53
  title = EPUB::Parser.parse(file_path).title
39
54
  notify %Q|ADDED: #{title}\n#{file_path}|
55
+ FileUtils.touch exit_time_file
40
56
  rescue => error
41
57
  $stderr.puts error
58
+ $stderr.puts error.backtrace if @debug
42
59
  end
43
60
  end
44
61
  removed.each do |file_path|
@@ -47,18 +64,25 @@ class Watch
47
64
  begin
48
65
  @db.remove file_path
49
66
  notify %Q|REMOVED:\n#{file_path}|
67
+ FileUtils.touch exit_time_file
50
68
  rescue => error
51
69
  $stderr.puts error
70
+ $stderr.puts error.backtrace if @debug
52
71
  end
53
72
  end
54
73
  end
55
74
  ensure
75
+ pid_file.delete
56
76
  FileUtils.touch exit_time_file
57
77
  end
58
78
  end
59
79
 
60
80
  private
61
81
 
82
+ def notify?
83
+ @notify
84
+ end
85
+
62
86
  def exit_time
63
87
  @exittime ||= File.mtime(exit_time_file)
64
88
  end
@@ -67,6 +91,10 @@ class Watch
67
91
  @db.db_dir.join('../exittime').to_path
68
92
  end
69
93
 
94
+ def pid_file
95
+ @work_dir + PID_FILE_NAME
96
+ end
97
+
70
98
  def catch_up
71
99
  @directories.each do |dir|
72
100
  Dir["#{dir}/**/*.epub"].each do |file_path|
@@ -77,15 +105,34 @@ class Watch
77
105
  operation = removed.zero? ? 'ADDED' : 'UPDATED'
78
106
  title = EPUB::Parser.parse(file_path).title
79
107
  notify "#{operation}: #{title}\n#{file_path}"
108
+ FileUtils.touch exit_time_file
80
109
  rescue => error
81
110
  $stderr.puts error
111
+ $stderr.puts error.backtrace if @debug
82
112
  end
83
113
  end
84
114
  end
115
+ rescue
116
+ pid_file.unlink
117
+ end
118
+
119
+ def write_pid_file
120
+ if pid_file.exist?
121
+ pid = pid_file.read.to_i
122
+ begin
123
+ Process.kill 0, pid
124
+ raise "#{$PROGRAM_NAME}(pid: #{pid}) is running"
125
+ rescue Errno::ESRCH
126
+ end
127
+ end
128
+ $stderr.puts "pid: #{Process.pid}" if @debug
129
+ pid_file.open 'wb' do |file|
130
+ file.write Process.pid
131
+ end
85
132
  end
86
133
 
87
134
  def notify(message)
88
135
  $stderr.puts message
89
- Notify.notify $PROGRAM_NAME, message
136
+ Notify.notify $PROGRAM_NAME, message if notify?
90
137
  end
91
138
  end
data/bin/epub-search CHANGED
@@ -4,7 +4,7 @@ require 'thor'
4
4
  require 'epub/search'
5
5
 
6
6
  Class.new(Thor) {
7
- APP_DIR = File.expand_path('../../app', __FILE__)
7
+ APP_DIR = File.expand_path('../app', __dir__)
8
8
  Dir["#{APP_DIR}/*.rb"].each do |path|
9
9
  require path
10
10
  end
@@ -18,44 +18,47 @@ Class.new(Thor) {
18
18
  class_option :config, :type => :string, :aliases => '-c', :default => nil, :desc => 'Path to config file'
19
19
 
20
20
  method_option :force, :type => :boolean, :aliases => '-f', :default => false, :desc => 'Remove existing database before init'
21
- desc 'init [DB_DIR]', 'Setup database'
22
- def init(db_dir=config[:db_dir])
23
- Init.new(db_dir).run(options[:force])
21
+ desc 'init [DIR]', 'Setup database'
22
+ def init(dir=config[:dir])
23
+ Init.new(dir).run(options[:force])
24
24
  end
25
25
 
26
26
  method_option :update, :type => :boolean, :default => true, :desc => 'Remove existing indices of given book before adding'
27
27
  desc 'add FILE', 'Add FILE to database'
28
28
  def add(file)
29
- Add.new(config[:db_dir], file).run(options[:update])
29
+ Add.new(config[:dir], file).run(options[:update])
30
30
  end
31
31
 
32
32
  method_option :color, :type => :string, :aliasis => :colour, :default => 'auto', :desc => 'Color search word in search result. auto, always and never is available. --no-color also is available as never', :banner => 'WHEN'
33
33
  desc 'search WORD [BOOK]', 'Search WORD in book whose title is like BOOK from database'
34
34
  def search(word, book=nil)
35
35
  raise 'Invalid argument for color option' unless [nil, 'auto', 'always', 'never'].include? options[:color]
36
- Search.new(config[:db_dir], word, book).run(options[:color])
36
+ Search.new(config[:dir], word, book).run(options[:color])
37
37
  end
38
38
 
39
+ method_option :daemonize, :type => :boolean, :default => false, :desc => 'Watch in background'
40
+ method_option :notify, :type => :boolean, :default => true, :desc => 'Notify on adding/updating/removing files'
41
+ method_option :debug, :type => :boolean, :default => false, :desc => 'Set debugging flags'
39
42
  desc 'watch [DIRECTORY [DIRECTORY ...]]', 'Index all of EPUB files in DIRECTORY'
40
43
  def watch(*directories)
41
44
  directories = config[:directories] if directories.empty?
42
- Watch.new(config[:db_dir], directories).run
45
+ Watch.new(config[:dir], directories).run(notify_on_change: options[:notify], daemonize: options[:daemonize], debug: options[:debug])
43
46
  end
44
47
 
45
48
  desc 'remove FILE', 'Remove FILE from database'
46
49
  def remove(file)
47
- Remove.new(config[:db_dir], file).run
50
+ Remove.new(config[:dir], file).run
48
51
  end
49
52
 
50
53
  desc 'server', 'Run server'
51
54
  def server
52
- Server.new(config[:db_dir]).run
55
+ Server.new(config[:dir]).run
53
56
  end
54
57
 
55
- method_option :path, :typ => :boolean, :aliases => '-p', :default => false, :desc => 'Swho book paths'
58
+ method_option :path, :type => :boolean, :aliases => '-p', :default => false, :desc => 'Swho book paths'
56
59
  desc 'list', 'Show list of book titles in database'
57
60
  def list
58
- List.new(config[:db_dir]).run(options[:path])
61
+ List.new(config[:dir]).run(options[:path])
59
62
  end
60
63
 
61
64
  private
data/epub-search.gemspec CHANGED
@@ -10,8 +10,9 @@ Gem::Specification.new do |gem|
10
10
  gem.email = ["KitaitiMakoto@gmail.com"]
11
11
  gem.description = %q{Provides tool and library of full text search for EPUB books}
12
12
  gem.summary = %q{Full text search for EPUB books}
13
- # gem.homepage = ""
13
+ gem.homepage = "https://github.com/KitaitiMakoto/epub-search"
14
14
 
15
+ gem.required_ruby_version = '>= 2.0.0'
15
16
  gem.files = `git ls-files`.split($/)
16
17
  gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
17
18
  gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
@@ -24,7 +25,7 @@ Gem::Specification.new do |gem|
24
25
  gem.add_runtime_dependency 'rb-inotify'
25
26
  gem.add_runtime_dependency 'listen'
26
27
  gem.add_runtime_dependency 'highline'
27
- gem.add_runtime_dependency 'notify'
28
+ gem.add_runtime_dependency 'notify', '0.5.0'
28
29
  gem.add_runtime_dependency 'rack'
29
30
  gem.add_runtime_dependency 'tilt'
30
31
 
data/lib/epub/search.rb CHANGED
@@ -4,12 +4,15 @@ require 'epub/parser'
4
4
  require 'groonga'
5
5
  require 'listen'
6
6
  require 'highline'
7
+ require 'epub/search/database'
8
+ require 'epub/search/formatter'
9
+ require 'epub/search/server'
7
10
 
8
11
  module EPUB
9
12
  module Search
10
13
  DEFAULT_CONFIG = {
11
14
  :config_path => File.join(Dir.home, '.epub-search/config.yaml'),
12
- :db_dir => File.join(Dir.home, '.epub-search/db')
15
+ :dir => File.join(Dir.home, '.epub-search')
13
16
  }
14
17
 
15
18
  class << self
@@ -23,7 +26,3 @@ module EPUB
23
26
  end
24
27
  end
25
28
  end
26
-
27
- require 'epub/search/database'
28
- require 'epub/search/formatter'
29
- require 'epub/search/server'
@@ -1,6 +1,7 @@
1
1
  module EPUB
2
2
  module Search
3
3
  class Database
4
+ DIR_NAME = 'db'
4
5
  FILE_NAME = 'epub-search.db'
5
6
 
6
7
  attr_reader :db_dir
@@ -19,7 +20,7 @@ module EPUB
19
20
  end
20
21
 
21
22
  def init(force=false)
22
- @db_dir.rmtree if force
23
+ @db_dir.rmtree if force && @db_dir.exist?
23
24
  @db_dir.mkpath
24
25
  Groonga::Database.create :path => db_file.to_path
25
26
  Groonga::Schema.create_table 'Pages', :type => :array
@@ -32,9 +33,9 @@ module EPUB
32
33
  table.text 'content'
33
34
  end
34
35
  Groonga::Schema.create_table 'Terms',
35
- :type => :patricia_trie,
36
- :normalizer => :NormalizerAuto,
37
- :default_tokenizer => 'TokenBigram'
36
+ :type => :patricia_trie,
37
+ :normalizer => :NormalizerAuto,
38
+ :default_tokenizer => 'TokenBigram'
38
39
  Groonga::Schema.change_table 'Terms' do |table|
39
40
  table.index 'Pages.book_title'
40
41
  table.index 'Pages.metadata'
@@ -70,11 +71,11 @@ module EPUB
70
71
  # @return [Integer] the number of removed recoreds
71
72
  def remove(file_path)
72
73
  file_path = Pathname.new(file_path) unless file_path.kind_of? Pathname
73
- location = file_path.expand_path.to_path
74
+ location = file_path.expand_path
74
75
  record_count = 0
75
76
  open do
76
77
  records = pages.select {|record|
77
- record.location == location
78
+ record.location == location.to_path
78
79
  }
79
80
  records.each do |record|
80
81
  record.key.delete
@@ -102,8 +103,9 @@ module EPUB
102
103
  def books(path=false)
103
104
  open do
104
105
  pages.group_by(&:location).collect {|location, records|
105
- result =records.first.book_title
106
+ result = records.first.book_title
106
107
  result << " - #{location}" if path
108
+ result
107
109
  }
108
110
  end
109
111
  end
@@ -1,5 +1,5 @@
1
1
  module EPUB
2
2
  module Search
3
- VERSION = "0.0.1"
3
+ VERSION = "0.0.2"
4
4
  end
5
5
  end
data/test/helper.rb CHANGED
@@ -1,3 +1,8 @@
1
1
  require 'test/unit'
2
2
  require 'test/unit/notify'
3
3
  require 'epub/search'
4
+ require 'tmpdir'
5
+
6
+ class EPUB::Search::TestCase < Test::Unit::TestCase
7
+ include EPUB::Search
8
+ end
Binary file
@@ -1,7 +1,83 @@
1
1
  require_relative 'helper'
2
2
 
3
- class TestDatabase < Test::Unit::TestCase
4
- def test_example
5
- assert false
3
+ class TestDatabase < EPUB::Search::TestCase
4
+ def setup
5
+ @dir = Dir.mktmpdir 'epub-search'
6
+ @db = Database.new(@dir)
7
+ end
8
+
9
+ def teardown
10
+ FileUtils.remove_entry_secure @dir if File.directory? @dir
11
+ end
12
+
13
+ def test_paths
14
+ assert_equal Pathname.new(@dir), @db.db_dir
15
+ assert_equal Pathname.new(@dir).join('epub-search.db'), @db.db_file
16
+ end
17
+
18
+ def test_init_make_db_paths
19
+ dir = File.join(@dir, 'init')
20
+ db = Database.new(dir)
21
+ db.init
22
+ assert_path_exist db.db_dir
23
+ assert_path_exist db.db_file
24
+ end
25
+
26
+ class TestAfterInit < TestDatabase
27
+ def setup
28
+ super
29
+ @db.init
30
+ end
31
+
32
+ def test_init_make_Pages_table
33
+ open_db do
34
+ assert_not_nil Groonga['Pages']
35
+ end
36
+ end
37
+
38
+ def test_init_make_Terms_table
39
+ open_db do
40
+ assert_not_nil Groonga['Terms']
41
+ end
42
+ end
43
+
44
+ class TestAdd < TestAfterInit
45
+ class TestWhenNonEpubFilePassed < TestAdd
46
+ def setup
47
+ super
48
+ @epub_path = __FILE__
49
+ end
50
+
51
+ def test_add_raise_error
52
+ assert_raise Zip::Error do
53
+ @db.add @epub_path
54
+ end
55
+ end
56
+ end
57
+
58
+ class TestWhenEpubFilePassed < TestAdd
59
+ def setup
60
+ super
61
+ @epub_path = File.join(__dir__, 'rails_guides.epub')
62
+ end
63
+
64
+ def test_add_insert_records_same_to_xhtml_in_epub
65
+ @db.add @epub_path
66
+ epub = EPUB::Parser.parse(@epub_path)
67
+ xhtmls = epub.each_content.select {|content| content.media_type == 'application/xhtml+xml'}.length
68
+ open_db do
69
+ assert_equal xhtmls, Groonga['Pages'].size
70
+ end
71
+ end
72
+ end
73
+ end
74
+ end
75
+
76
+ private
77
+
78
+ def open_db
79
+ Groonga::Database.open @db.db_file.to_path do |database|
80
+ yield database
81
+ end
6
82
  end
7
83
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: epub-search
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - KITAITI Makoto
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-03-30 00:00:00.000000000 Z
11
+ date: 2013-04-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: epub-parser
@@ -98,16 +98,16 @@ dependencies:
98
98
  name: notify
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
- - - '>='
101
+ - - '='
102
102
  - !ruby/object:Gem::Version
103
- version: '0'
103
+ version: 0.5.0
104
104
  type: :runtime
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
- - - '>='
108
+ - - '='
109
109
  - !ruby/object:Gem::Version
110
- version: '0'
110
+ version: 0.5.0
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: rack
113
113
  requirement: !ruby/object:Gem::Requirement
@@ -230,6 +230,7 @@ extra_rdoc_files: []
230
230
  files:
231
231
  - .gitignore
232
232
  - .yardopts
233
+ - CHANGELOG.markdown
233
234
  - Gemfile
234
235
  - LICENSE.txt
235
236
  - README.markdown
@@ -252,8 +253,9 @@ files:
252
253
  - template/index.html.erb
253
254
  - template/result.html.erb
254
255
  - test/helper.rb
256
+ - test/rails_guides.epub
255
257
  - test/test_database.rb
256
- homepage:
258
+ homepage: https://github.com/KitaitiMakoto/epub-search
257
259
  licenses: []
258
260
  metadata: {}
259
261
  post_install_message:
@@ -264,7 +266,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
264
266
  requirements:
265
267
  - - '>='
266
268
  - !ruby/object:Gem::Version
267
- version: '0'
269
+ version: 2.0.0
268
270
  required_rubygems_version: !ruby/object:Gem::Requirement
269
271
  requirements:
270
272
  - - '>='
@@ -278,5 +280,6 @@ specification_version: 4
278
280
  summary: Full text search for EPUB books
279
281
  test_files:
280
282
  - test/helper.rb
283
+ - test/rails_guides.epub
281
284
  - test/test_database.rb
282
285
  has_rdoc: yard