imba 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +3 -1
- data/README.md +20 -8
- data/Rakefile +13 -0
- data/db/database.yml +4 -0
- data/db/migrate/001_create_movies.rb +15 -0
- data/imba.gemspec +4 -0
- data/lib/imba.rb +10 -0
- data/lib/imba/cli.rb +13 -1
- data/lib/imba/data_store.rb +17 -73
- data/lib/imba/movie.rb +20 -3
- data/lib/imba/movie_list.rb +58 -27
- data/lib/imba/version.rb +1 -1
- data/screens/example.png +0 -0
- data/spec/data_store_spec.rb +0 -41
- data/spec/movie_list_spec.rb +0 -7
- data/spec/movie_spec.rb +7 -1
- data/spec/spec_helper.rb +23 -6
- metadata +61 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d46dce5c9679657e961bfb660b18661c9a45e146
|
4
|
+
data.tar.gz: 04b2ed0090f31ead4f8bef3a211c7036c4de4034
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ae8243cc64ffc7fd59df8bde92e3bdac4b24b5d2346622fb7c56da27ab6b3742a017fbe4e7021e58dce2bf1ed0d9c7f481c8339e62fed303fec402fed37ee9ce
|
7
|
+
data.tar.gz: 0fcea6c4f8c47860980bf2c31676ecee1faed54cd982edca030bbb11aa2188983901979aaff7430d0120194c85ab0ff73f47007e79c9a1b4c27d11703e578d64
|
data/.gitignore
CHANGED
data/README.md
CHANGED
@@ -5,21 +5,33 @@
|
|
5
5
|
|
6
6
|
## Todo:
|
7
7
|
|
8
|
+
- [x] build a mess and refactor later :)
|
8
9
|
- [x] init .imba-store
|
9
10
|
- [x] persistence datastore
|
10
11
|
- [x] sync: get current directory list (movie names)
|
11
|
-
- [ ] rescue ".imba does not exist (PStore::Error)"
|
12
|
-
- [ ] place names in queue w/o .imba-meta
|
13
|
-
- [ ] pop movie and search imdb
|
14
|
-
- [ ] get first item
|
15
12
|
- [x] ask for updating movie
|
16
|
-
- [x] rename
|
17
|
-
- [
|
18
|
-
- [
|
13
|
+
- [x] rename directory
|
14
|
+
- [x] cleanup movie titles, remove crap like (I)
|
15
|
+
- [x] synching stuff with progressbar (downloading all the movies)
|
16
|
+
- [x] refactor to use active_record instead of datastore for movies
|
17
|
+
- [ ] underscore all the symbols
|
18
|
+
- [ ] catch errors in cli
|
19
|
+
- [ ] get/send different name when false match
|
20
|
+
- [ ] add possibility to update
|
21
|
+
- [ ] what's up with folders which were deleted but are still in the db?
|
22
|
+
- [ ] add tags to handle genres
|
23
|
+
- [ ] database cleaner
|
24
|
+
- [ ] fix utf-8 issues
|
19
25
|
- [ ] list movies by rating | genre | etc
|
20
26
|
- [ ] print imba-store
|
21
|
-
- [ ] play movie # on ATV
|
22
27
|
- [ ] maybe document code with yard
|
28
|
+
- [ ] decouple movie (objectify representation)
|
29
|
+
- [ ] play movie # on ATV (at least open folder or send to vlc)
|
30
|
+
|
31
|
+
|
32
|
+
## Impression
|
33
|
+
|
34
|
+
![example](/screens/example.png)
|
23
35
|
|
24
36
|
|
25
37
|
## Installation
|
data/Rakefile
CHANGED
@@ -1,5 +1,8 @@
|
|
1
1
|
require 'bundler/gem_tasks'
|
2
2
|
require 'rspec/core/rake_task'
|
3
|
+
require 'active_record'
|
4
|
+
require 'yaml'
|
5
|
+
require 'logger'
|
3
6
|
|
4
7
|
RSpec::Core::RakeTask.new(:spec)
|
5
8
|
|
@@ -10,3 +13,13 @@ task check: :spec do
|
|
10
13
|
system 'rubocop'
|
11
14
|
system 'flog lib'
|
12
15
|
end
|
16
|
+
|
17
|
+
desc 'migrate database'
|
18
|
+
task migrate: :environment do
|
19
|
+
ActiveRecord::Migrator.migrate('db/migrate', ENV['VERSION'] ? ENV['VERSION'].to_i : nil)
|
20
|
+
end
|
21
|
+
|
22
|
+
task :environment do
|
23
|
+
ActiveRecord::Base.establish_connection(YAML.load(File.open('db/database.yml')))
|
24
|
+
ActiveRecord::Base.logger = Logger.new(File.open('db/database.log', 'a'))
|
25
|
+
end
|
data/db/database.yml
ADDED
data/imba.gemspec
CHANGED
@@ -23,6 +23,7 @@ Gem::Specification.new do |spec|
|
|
23
23
|
spec.add_development_dependency 'rake'
|
24
24
|
spec.add_development_dependency 'rspec', '~> 2.14.1'
|
25
25
|
spec.add_development_dependency 'rspec-pride', '~> 2.2.0'
|
26
|
+
spec.add_development_dependency 'database_cleaner', '~> 1.2.0'
|
26
27
|
spec.add_development_dependency 'guard-rspec', '~> 4.2.3'
|
27
28
|
spec.add_development_dependency 'pry', '~> 0.9.12.4'
|
28
29
|
spec.add_development_dependency 'pry-rescue', '~> 1.2.0'
|
@@ -31,4 +32,7 @@ Gem::Specification.new do |spec|
|
|
31
32
|
spec.add_development_dependency 'flog'
|
32
33
|
|
33
34
|
spec.add_runtime_dependency 'imdb', '~> 0.8.0'
|
35
|
+
spec.add_runtime_dependency 'activerecord', '~> 4.0.1'
|
36
|
+
spec.add_runtime_dependency 'sqlite3', '~> 1.3.8'
|
37
|
+
spec.add_runtime_dependency 'ruby-progressbar', '~> 1.4.0'
|
34
38
|
end
|
data/lib/imba.rb
CHANGED
@@ -1,3 +1,6 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require 'active_record'
|
3
|
+
require 'yaml'
|
1
4
|
require 'imba/version'
|
2
5
|
require 'imba/cli'
|
3
6
|
require 'imba/colors'
|
@@ -9,4 +12,11 @@ require 'imdb'
|
|
9
12
|
module Imba
|
10
13
|
PATH ||= Dir.pwd
|
11
14
|
DIRECTORY = "#{PATH}/.imba"
|
15
|
+
|
16
|
+
ActiveRecord::Base.establish_connection(
|
17
|
+
adapter: 'sqlite3',
|
18
|
+
database: "#{DIRECTORY}/data.sqlite3",
|
19
|
+
pool: 5,
|
20
|
+
timeout: 5000
|
21
|
+
)
|
12
22
|
end
|
data/lib/imba/cli.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
# encoding: utf-8
|
1
2
|
require 'optparse'
|
2
3
|
|
3
4
|
module Imba
|
@@ -14,6 +15,7 @@ module Imba
|
|
14
15
|
else
|
15
16
|
"#{PATH}/.imba".tap { |dir| FileUtils.mkdir_p(dir) }
|
16
17
|
Imba::DataStore.init
|
18
|
+
Imba::DataStore.migrate
|
17
19
|
end
|
18
20
|
exit
|
19
21
|
end
|
@@ -28,6 +30,16 @@ module Imba
|
|
28
30
|
exit
|
29
31
|
end
|
30
32
|
|
33
|
+
opts.on('-s', '--synch', 'Scan movies and update database') do
|
34
|
+
Imba::MovieList.new.synch
|
35
|
+
exit
|
36
|
+
end
|
37
|
+
|
38
|
+
opts.on('-l', '--list', 'List all your movies') do
|
39
|
+
stdout.puts Imba::Movie.list
|
40
|
+
exit
|
41
|
+
end
|
42
|
+
|
31
43
|
opts.on('-v', '--version', 'Show current version') do
|
32
44
|
stdout.puts "IMBA #{Imba::VERSION}"
|
33
45
|
exit
|
@@ -38,7 +50,7 @@ module Imba
|
|
38
50
|
exit
|
39
51
|
end
|
40
52
|
|
41
|
-
opts.on('-e', 'execute raw ruby in the "Imba::*" scope') do
|
53
|
+
opts.on('-e', 'execute raw ruby in the "Imba::*" scope (just for dev purpose, will be removed soon!)') do
|
42
54
|
stdout.puts eval("Imba::#{argv[0]}")
|
43
55
|
exit
|
44
56
|
end
|
data/lib/imba/data_store.rb
CHANGED
@@ -1,82 +1,26 @@
|
|
1
|
-
require 'pstore'
|
2
|
-
|
3
1
|
module Imba
|
4
2
|
module DataStore
|
5
3
|
class << self
|
6
|
-
attr_reader :data
|
7
|
-
attr_writer :path
|
8
|
-
|
9
4
|
def init
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
def []=(key, value)
|
29
|
-
data_store.transaction { @data[key] = value }
|
30
|
-
end
|
31
|
-
|
32
|
-
def all
|
33
|
-
data_store.transaction(true) { @data.roots }
|
34
|
-
end
|
35
|
-
|
36
|
-
def to_hash
|
37
|
-
Imba::DataStore.all.each_with_object({}) { |id, hsh| hsh[id] = Imba::DataStore[id] }
|
38
|
-
end
|
39
|
-
|
40
|
-
def to_a
|
41
|
-
Imba::DataStore.all.each_with_object([]) { |id, ary| ary << "#{id}: #{Imba::DataStore[id]}" }
|
42
|
-
end
|
43
|
-
|
44
|
-
def transaction
|
45
|
-
data_store.transaction do
|
46
|
-
yield @data
|
47
|
-
@data.commit
|
48
|
-
end
|
49
|
-
end
|
50
|
-
|
51
|
-
def key?(key)
|
52
|
-
data_store.transaction(true) { @data.root?(key) }
|
53
|
-
end
|
54
|
-
|
55
|
-
def delete(*keys)
|
56
|
-
data_store.transaction do
|
57
|
-
keys.flatten.each { |key| @data.delete(key) }
|
58
|
-
@data.commit
|
5
|
+
ActiveRecord::Base.establish_connection(
|
6
|
+
adapter: 'sqlite3',
|
7
|
+
database: "#{DIRECTORY}/data.sqlite3",
|
8
|
+
pool: 5,
|
9
|
+
timeout: 5000
|
10
|
+
)
|
11
|
+
end
|
12
|
+
|
13
|
+
def migrate
|
14
|
+
ActiveRecord::Schema.define do
|
15
|
+
create_table :movies do |t|
|
16
|
+
t.integer :uniq_id
|
17
|
+
t.string :name
|
18
|
+
t.string :year
|
19
|
+
t.text :genres
|
20
|
+
t.float :rating
|
21
|
+
end
|
59
22
|
end
|
60
23
|
end
|
61
|
-
|
62
|
-
def clear
|
63
|
-
delete(all)
|
64
|
-
end
|
65
|
-
|
66
|
-
def inspect
|
67
|
-
data_store
|
68
|
-
"#<#{name}:#{ruby_like_object_id} #{instance_vars}>"
|
69
|
-
end
|
70
|
-
|
71
|
-
private
|
72
|
-
|
73
|
-
def ruby_like_object_id
|
74
|
-
"0x#{(object_id << 1).to_s(16)}"
|
75
|
-
end
|
76
|
-
|
77
|
-
def instance_vars
|
78
|
-
instance_variables.map { |v| "#{v}=#{instance_variable_get(v).inspect}" }.join(', ')
|
79
|
-
end
|
80
24
|
end
|
81
25
|
end
|
82
26
|
end
|
data/lib/imba/movie.rb
CHANGED
@@ -1,7 +1,24 @@
|
|
1
1
|
module Imba
|
2
|
-
class Movie
|
3
|
-
|
4
|
-
|
2
|
+
class Movie < ActiveRecord::Base
|
3
|
+
include Colors
|
4
|
+
serialize :genres, Array
|
5
|
+
|
6
|
+
scope :list, -> { order(name: :asc) }
|
7
|
+
scope :top, ->(n = 25) { order(rating: :desc).limit(n) }
|
8
|
+
scope :year, ->(year = Time.now.year) { where(year: year) }
|
9
|
+
scope :genre, ->(genre = nil) { where('genres LIKE ?', "%#{genre}%") }
|
10
|
+
|
11
|
+
def to_s
|
12
|
+
terminal_width = `tput cols`
|
13
|
+
column = terminal_width.to_i / 2
|
14
|
+
|
15
|
+
''.tap do |s|
|
16
|
+
s << "#{sprintf('%-9s', uniq_id)} #{green(name)}".ljust(column)
|
17
|
+
s << ' ' + magenta("(#{year})")
|
18
|
+
s << ' ' + red("#{rating}/10")
|
19
|
+
s << ' ' + yellow(genres)
|
20
|
+
s.rjust(column)
|
21
|
+
end
|
5
22
|
end
|
6
23
|
end
|
7
24
|
end
|
data/lib/imba/movie_list.rb
CHANGED
@@ -1,52 +1,83 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require 'thread'
|
3
|
+
require 'ruby-progressbar'
|
4
|
+
|
1
5
|
module Imba
|
2
6
|
class MovieList
|
3
7
|
include Colors
|
4
8
|
attr_reader :movies
|
9
|
+
attr_accessor :directory_queue, :movie_queue
|
10
|
+
|
11
|
+
Diff = Struct.new(:directory_name, :movie_title, :result)
|
5
12
|
|
6
13
|
def initialize
|
7
14
|
@movies = Movie.all
|
15
|
+
@directory_queue = Queue.new
|
16
|
+
@movie_queue = Queue.new
|
8
17
|
end
|
9
18
|
|
10
19
|
def movie_dirs
|
11
|
-
# don't belong here...
|
12
|
-
# get movie names (dirs)
|
13
20
|
@movie_dirs ||= Dir['*'].select { |f| File.directory? f }
|
14
21
|
end
|
15
22
|
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
# @movie_dirs.each { |d| FileUtils.cd(d) { FileUtils.touch ".hello" } }
|
20
|
-
|
23
|
+
#
|
24
|
+
# TODO: make it work first, refactor later (for even more fun!)
|
25
|
+
#
|
21
26
|
def synch
|
22
27
|
prompt = '(enter "y" to confirm or anything else to continue)'
|
23
|
-
|
28
|
+
indexed_movies = Movie.pluck(:uniq_id)
|
29
|
+
p = ProgressBar.create(title: 'Scanning your movies', total: movie_dirs.length)
|
30
|
+
skipped = []
|
31
|
+
|
32
|
+
# populate queue
|
24
33
|
movie_dirs.each do |directory_name|
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
34
|
+
FileUtils.cd(directory_name) do
|
35
|
+
if File.exist?('.imba') && File.open('.imba') { |f| indexed_movies.include?(f.read.to_i) }
|
36
|
+
skipped << directory_name
|
37
|
+
p.increment
|
38
|
+
else
|
39
|
+
directory_queue.push(directory_name)
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
# download all the movies
|
45
|
+
until directory_queue.empty?
|
46
|
+
directory_name = directory_queue.pop
|
47
|
+
result = Imdb::Movie.search(directory_name).first
|
48
|
+
movie_title = result.title.gsub(/\(\d+\)|\(.*\)/, '').strip.force_encoding('UTF-8')
|
49
|
+
movie_queue.push Diff.new(directory_name, movie_title, result)
|
50
|
+
p.increment
|
51
|
+
end
|
29
52
|
|
30
|
-
|
53
|
+
# puts foundings
|
54
|
+
until movie_queue.empty?
|
55
|
+
diff = movie_queue.pop
|
31
56
|
# update movie name? (folder)
|
32
|
-
if directory_name != movie_title
|
33
|
-
puts "change #{red(directory_name)} => #{green(movie_title)}? \n#{prompt}"
|
34
|
-
FileUtils.mv(directory_name, movie_title) if STDIN.gets.strip.downcase == 'y'
|
57
|
+
if diff.directory_name != diff.movie_title
|
58
|
+
STDOUT.puts "change #{red(diff.directory_name)} => #{green(diff.movie_title)}? \n#{prompt}"
|
59
|
+
FileUtils.mv(diff.directory_name, movie_title) if STDIN.gets.strip.downcase == 'y'
|
35
60
|
end
|
36
61
|
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
62
|
+
# create movie from result
|
63
|
+
STDOUT.puts "save #{green(diff.movie_title)}? \n#{prompt}"
|
64
|
+
if STDIN.gets.strip.downcase == 'y'
|
65
|
+
movie = Movie.create(
|
66
|
+
uniq_id: diff.result.id,
|
67
|
+
name: diff.movie_title,
|
68
|
+
year: diff.result.year,
|
69
|
+
genres: diff.result.genres.map { |g| g.downcase.to_sym },
|
70
|
+
rating: Float(diff.result.rating)
|
71
|
+
)
|
72
|
+
FileUtils.cd(diff.movie_title) do
|
73
|
+
File.open('.imba', 'w+') { |f| f.write(movie.uniq_id) }
|
74
|
+
end
|
75
|
+
STDOUT.puts cyan("#{movie.to_s}\n")
|
42
76
|
end
|
43
|
-
|
44
|
-
# ask if founding is correct
|
45
|
-
# write .imdb_uniq_id in movie folder
|
46
|
-
# save movie name and imdb_uniq_id in DataStore[:movies]
|
47
|
-
# or serialize hole imdb movie object?!
|
48
77
|
end
|
49
|
-
|
78
|
+
|
79
|
+
skipped.each { |skip| STDOUT.puts yellow("skipped: #{skip}") }
|
80
|
+
STDOUT.puts "\ndone"
|
50
81
|
end
|
51
82
|
end
|
52
83
|
end
|
data/lib/imba/version.rb
CHANGED
data/screens/example.png
ADDED
Binary file
|
data/spec/data_store_spec.rb
CHANGED
@@ -3,46 +3,5 @@ require 'spec_helper'
|
|
3
3
|
module Imba
|
4
4
|
describe DataStore do
|
5
5
|
|
6
|
-
describe '#inspect' do
|
7
|
-
subject { Imba::DataStore.inspect }
|
8
|
-
it { expect(subject).to include('#<Imba::DataStore:0x') }
|
9
|
-
it { expect(subject).to include(Imba::DataStore.path) }
|
10
|
-
it { expect(subject).to include('/tmp/.imba_test/test_data.pstore') }
|
11
|
-
it { expect(subject).to include('@data=#<PStore:') }
|
12
|
-
it { expect(subject).to include('@ultra_safe=true') }
|
13
|
-
it { expect(subject).to include('@thread_safe=true') }
|
14
|
-
it { expect(subject).to include('@table={}') }
|
15
|
-
end
|
16
|
-
|
17
|
-
describe 'read/write something in/from the data store' do
|
18
|
-
before { Imba::DataStore[:something] = { foo: 'bar' } }
|
19
|
-
it { expect(Imba::DataStore[:something]).to eql(foo: 'bar') }
|
20
|
-
it { expect(Imba::DataStore.all).to eql([:something]) }
|
21
|
-
it { expect(Imba::DataStore.key?(:something)).to be_true }
|
22
|
-
end
|
23
|
-
|
24
|
-
describe 'delete something from the data store' do
|
25
|
-
before do
|
26
|
-
Imba::DataStore[:stay_my_friend] = { foo: 'bar' }
|
27
|
-
Imba::DataStore[:delete_me] = 'can\'t wait'
|
28
|
-
Imba::DataStore.delete(:delete_me)
|
29
|
-
end
|
30
|
-
it { expect(Imba::DataStore.key?(:delete_me)).to be_false }
|
31
|
-
it { expect(Imba::DataStore.all).to eql([:stay_my_friend]) }
|
32
|
-
end
|
33
|
-
|
34
|
-
describe 'multi transactions' do
|
35
|
-
before do
|
36
|
-
Imba::DataStore.transaction do |data|
|
37
|
-
data[:number] = 42
|
38
|
-
data[:foo] = 'bar bazly'
|
39
|
-
data[:words] = %w[amazing stuff inside transaction]
|
40
|
-
end
|
41
|
-
end
|
42
|
-
|
43
|
-
it { expect(Imba::DataStore.all).to eql([:number, :foo, :words]) }
|
44
|
-
it { expect(Imba::DataStore[:words]).to eql(%w[amazing stuff inside transaction]) }
|
45
|
-
end
|
46
|
-
|
47
6
|
end
|
48
7
|
end
|
data/spec/movie_list_spec.rb
CHANGED
@@ -2,13 +2,6 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
module Imba
|
4
4
|
describe MovieList do
|
5
|
-
# it { binding.pry }
|
6
|
-
|
7
|
-
# movie_dirs = Dir['*'].select {|f| File.directory? f}
|
8
|
-
#
|
9
|
-
# require "find"
|
10
|
-
# imba_files = []
|
11
|
-
# Find.find(".") {|path| imba_files << path if path =~ /\.imba$/}
|
12
5
|
|
13
6
|
end
|
14
7
|
end
|
data/spec/movie_spec.rb
CHANGED
@@ -2,6 +2,12 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
module Imba
|
4
4
|
describe Movie do
|
5
|
-
|
5
|
+
let!(:sneakers) { Movie.create(name: 'Sneakers', uniq_id: 1, year: 2012, genres: [:foo, :hackers], rating: 7.0) }
|
6
|
+
let!(:war_games) { Movie.create(name: 'War Games', uniq_id: 2, year: 2012, genres: [:foo, :war], rating: 8.0) }
|
7
|
+
let!(:tron) { Movie.create(name: 'Tron: Legacy', uniq_id: 3, year: 2012, genres: [:foo, :tron], rating: 9.0) }
|
8
|
+
|
9
|
+
it { expect(Movie.list).to match_array([sneakers, tron, war_games]) }
|
10
|
+
it { expect(Movie.top(5).first).to eql(tron) }
|
11
|
+
it { expect(Movie.top(5).last).to eql(sneakers) }
|
6
12
|
end
|
7
13
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,17 +1,34 @@
|
|
1
1
|
require 'rspec/pride'
|
2
|
+
require 'database_cleaner'
|
2
3
|
require 'pry'
|
3
4
|
require_relative '../lib/imba'
|
4
5
|
|
6
|
+
ActiveRecord::Base.establish_connection(adapter: 'sqlite3', database: ":memory:")
|
7
|
+
|
5
8
|
RSpec.configure do |config|
|
6
9
|
config.color = true
|
7
10
|
config.order = 'random'
|
8
11
|
|
9
|
-
config.before(:
|
10
|
-
|
11
|
-
|
12
|
-
|
12
|
+
config.before(:suite) do
|
13
|
+
ActiveRecord::Schema.define do
|
14
|
+
self.verbose = false
|
15
|
+
create_table :movies, force: true do |t|
|
16
|
+
t.integer :uniq_id
|
17
|
+
t.string :name
|
18
|
+
t.string :year
|
19
|
+
t.text :genres
|
20
|
+
t.float :rating
|
21
|
+
end
|
22
|
+
end
|
23
|
+
DatabaseCleaner.strategy = :transaction
|
24
|
+
DatabaseCleaner.clean_with(:truncation)
|
25
|
+
end
|
26
|
+
|
27
|
+
config.before(:each) do
|
28
|
+
DatabaseCleaner.start
|
13
29
|
end
|
14
30
|
|
15
|
-
config.
|
16
|
-
|
31
|
+
config.after(:each) do
|
32
|
+
DatabaseCleaner.clean
|
33
|
+
end
|
17
34
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: imba
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Marco Schaden
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-01-
|
11
|
+
date: 2014-01-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -66,6 +66,20 @@ dependencies:
|
|
66
66
|
- - ~>
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: 2.2.0
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: database_cleaner
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ~>
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: 1.2.0
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ~>
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: 1.2.0
|
69
83
|
- !ruby/object:Gem::Dependency
|
70
84
|
name: guard-rspec
|
71
85
|
requirement: !ruby/object:Gem::Requirement
|
@@ -164,6 +178,48 @@ dependencies:
|
|
164
178
|
- - ~>
|
165
179
|
- !ruby/object:Gem::Version
|
166
180
|
version: 0.8.0
|
181
|
+
- !ruby/object:Gem::Dependency
|
182
|
+
name: activerecord
|
183
|
+
requirement: !ruby/object:Gem::Requirement
|
184
|
+
requirements:
|
185
|
+
- - ~>
|
186
|
+
- !ruby/object:Gem::Version
|
187
|
+
version: 4.0.1
|
188
|
+
type: :runtime
|
189
|
+
prerelease: false
|
190
|
+
version_requirements: !ruby/object:Gem::Requirement
|
191
|
+
requirements:
|
192
|
+
- - ~>
|
193
|
+
- !ruby/object:Gem::Version
|
194
|
+
version: 4.0.1
|
195
|
+
- !ruby/object:Gem::Dependency
|
196
|
+
name: sqlite3
|
197
|
+
requirement: !ruby/object:Gem::Requirement
|
198
|
+
requirements:
|
199
|
+
- - ~>
|
200
|
+
- !ruby/object:Gem::Version
|
201
|
+
version: 1.3.8
|
202
|
+
type: :runtime
|
203
|
+
prerelease: false
|
204
|
+
version_requirements: !ruby/object:Gem::Requirement
|
205
|
+
requirements:
|
206
|
+
- - ~>
|
207
|
+
- !ruby/object:Gem::Version
|
208
|
+
version: 1.3.8
|
209
|
+
- !ruby/object:Gem::Dependency
|
210
|
+
name: ruby-progressbar
|
211
|
+
requirement: !ruby/object:Gem::Requirement
|
212
|
+
requirements:
|
213
|
+
- - ~>
|
214
|
+
- !ruby/object:Gem::Version
|
215
|
+
version: 1.4.0
|
216
|
+
type: :runtime
|
217
|
+
prerelease: false
|
218
|
+
version_requirements: !ruby/object:Gem::Requirement
|
219
|
+
requirements:
|
220
|
+
- - ~>
|
221
|
+
- !ruby/object:Gem::Version
|
222
|
+
version: 1.4.0
|
167
223
|
description: With Imba you can manage your movies by meta information (like rating,
|
168
224
|
genre, year) from IMDB.
|
169
225
|
email:
|
@@ -183,6 +239,8 @@ files:
|
|
183
239
|
- README.md
|
184
240
|
- Rakefile
|
185
241
|
- bin/imba
|
242
|
+
- db/database.yml
|
243
|
+
- db/migrate/001_create_movies.rb
|
186
244
|
- imba.gemspec
|
187
245
|
- lib/imba.rb
|
188
246
|
- lib/imba/cli.rb
|
@@ -191,6 +249,7 @@ files:
|
|
191
249
|
- lib/imba/movie.rb
|
192
250
|
- lib/imba/movie_list.rb
|
193
251
|
- lib/imba/version.rb
|
252
|
+
- screens/example.png
|
194
253
|
- spec/data_store_spec.rb
|
195
254
|
- spec/imba_spec.rb
|
196
255
|
- spec/movie_list_spec.rb
|