pluto-models 1.1.0 → 1.2.0

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: 7d114af161602287c52ed90e78691eb9e4b04b74
4
- data.tar.gz: 009c9f806a64391c97cee02f2d0e3f5e8a48b094
3
+ metadata.gz: a9b3813114643297e875af83b6de083bb21105e9
4
+ data.tar.gz: 91c8b11ba6a9355c094a4925c58746fac6767e9a
5
5
  SHA512:
6
- metadata.gz: d07c395a1a7e88beab19c3f6b5b058fd99ae4c0a48ded6021b2265186ba3560b92ec514e056ed8c9ff32c0ce0f1ca0bcb2808c8967e5e8e98fa86dceaddf236e
7
- data.tar.gz: 401d00c0da7059d0eefd9adec5f13a18e74446796e5cf92364c61c2547c886312c26b8b65eaa5510d46d423cdc27556c43778e090843f806cd7dd1a9384b4b95
6
+ metadata.gz: 1a4c186d390099072cf075e5ebce91f54b85b366888bc34418d392cdc7bb73aa9cb2cbbb5b5b6cf6b9efdfee17f628f19c41514e1973a22997e7cf008ebbc1c5
7
+ data.tar.gz: 37f8499fcd0e15309de9e590726d8db86c01ade4b805719c02be4199f48172dcb19a25ecc3140262d647490c2b655a6c0480b5ec101695822951d55b2642f7ed
@@ -2,29 +2,16 @@ HISTORY.md
2
2
  Manifest.txt
3
3
  README.md
4
4
  Rakefile
5
- config/pluto.index.yml
6
5
  lib/pluto/activerecord.rb
7
6
  lib/pluto/connecter.rb
8
- lib/pluto/fetcher.rb
9
- lib/pluto/formatter.rb
10
- lib/pluto/installer.rb
11
- lib/pluto/lister.rb
12
- lib/pluto/manifest_helpers.rb
13
7
  lib/pluto/models.rb
14
- lib/pluto/models/activity.rb
15
8
  lib/pluto/models/feed.rb
9
+ lib/pluto/models/forward.rb
16
10
  lib/pluto/models/item.rb
17
11
  lib/pluto/models/site.rb
18
12
  lib/pluto/models/subscription.rb
19
13
  lib/pluto/models/utils.rb
20
- lib/pluto/refresher.rb
21
14
  lib/pluto/schema.rb
22
- lib/pluto/subscriber.rb
23
- lib/pluto/tasks/env.rake
24
- lib/pluto/tasks/setup.rake
25
- lib/pluto/tasks/stats.rake
26
- lib/pluto/tasks/update.rake
27
- lib/pluto/updater.rb
28
15
  lib/pluto/version.rb
29
16
  test/helper.rb
30
17
  test/test_helpers.rb
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # pluto-models gem - planet models and generator machinery for easy (re)use
1
+ # pluto-models gem - planet schema 'n' models for easy (re)use
2
2
 
3
3
  * home :: [github.com/feedreader/pluto-models](https://github.com/feedreader/pluto-models)
4
4
  * bugs :: [github.com/feedreader/pluto-models/issues](https://github.com/feedreader/pluto-models/issues)
@@ -10,64 +10,12 @@
10
10
 
11
11
  ## Usage
12
12
 
13
- ### Planet Configuration Sample
14
-
15
- `ruby.ini`:
16
-
17
- ```
18
- title = Planet Ruby
19
-
20
- [rubyflow]
21
- title = Ruby Flow
22
- link = http://rubyflow.com
23
- feed = http://feeds.feedburner.com/Rubyflow?format=xml
24
-
25
- [rubyonrails]
26
- title = Ruby on Rails Blog
27
- link = http://weblog.rubyonrails.org
28
- feed = http://weblog.rubyonrails.org/feed/atom.xml
29
-
30
- [viennarb]
31
- title = vienna.rb Blog
32
- link = http://vienna-rb.at
33
- feed = http://vienna-rb.at/atom.xml
34
- ```
35
-
36
- or `ruby.yml`:
37
-
38
- ```
39
- title: Planet Ruby
40
-
41
-
42
- rubyflow:
43
- title: Ruby Flow
44
- link: http://rubyflow.com
45
- feed: http://feeds.feedburner.com/Rubyflow?format=xml
46
-
47
- rubyonrails:
48
- title: Ruby on Rails Blog
49
- link: http://weblog.rubyonrails.org
50
- feed: http://weblog.rubyonrails.org/feed/atom.xml
51
-
52
- viennarb:
53
- title: vienna.rb Blog
54
- link: http://vienna-rb.at
55
- feed: http://vienna-rb.at/atom.xml
56
- ```
57
-
58
- For more samples, see [`nytimes.ini`](https://github.com/feedreader/pluto.samples/blob/master/nytimes.ini),
59
- [`js.ini`](https://github.com/feedreader/pluto.samples/blob/master/js.ini),
60
- [`dart.ini`](https://github.com/feedreader/pluto.samples/blob/master/dart.ini),
61
- [`haskell.ini`](https://github.com/feedreader/pluto.samples/blob/master/haskell.ini),
62
- [`viennarb.ini`](https://github.com/feedreader/pluto.samples/blob/master/viennarb.ini),
63
- [`beer.ini`](https://github.com/feedreader/pluto.samples/blob/master/beer.ini),
64
- [`football.ini`](https://github.com/feedreader/pluto.samples/blob/master/football.ini).
65
13
 
66
14
 
67
15
  ## Real World Usage
68
16
 
69
- [`pluto`](https://github.com/feedreader/pluto) - planet generator command line tool using the pluto-models gem
70
- [`pluto.live`](https://github.com/feedreader/pluto.live) - sample planet site; sinatra web app/starter template in ruby using the pluto-models gem
17
+ - [`pluto`](https://github.com/feedreader/pluto) - planet generator command line tool using the pluto-models gem
18
+ - [`pluto.live`](https://github.com/feedreader/pluto.live) - sample planet site; sinatra web app/starter template in ruby using the pluto-models gem
71
19
 
72
20
 
73
21
 
@@ -1,3 +1,5 @@
1
+ # encoding: utf-8
2
+
1
3
  module Pluto
2
4
 
3
5
 
@@ -21,10 +23,9 @@ class Connecter
21
23
  @debug || false
22
24
  end
23
25
 
26
+ def connect( config={} )
24
27
 
25
- def connect!( config = nil )
26
-
27
- if config.nil? # use/try DATABASE_URL from environment
28
+ if config.empty? # use/try DATABASE_URL from environment
28
29
 
29
30
  logger.debug "ENV['DATBASE_URL'] - >#{ENV['DATABASE_URL']}<"
30
31
 
@@ -77,18 +78,8 @@ class Connecter
77
78
  ActiveRecord::Base.logger = Logger.new( STDOUT )
78
79
  end
79
80
 
80
-
81
81
  ActiveRecord::Base.establish_connection( config )
82
-
83
- # first time? - auto-run db migratation, that is, create db tables
84
- unless ActivityDb::Models::Activity.table_exists?
85
- ActivityDb::CreateDb.new.up
86
- end
87
-
88
- unless Models::Feed.table_exists?
89
- CreateDb.new.up
90
- end
91
- end # method connect!
82
+ end # method connect
92
83
 
93
84
 
94
85
  end # class Connecter
@@ -7,24 +7,24 @@ require 'json'
7
7
  require 'uri'
8
8
  require 'pp'
9
9
  require 'fileutils'
10
- require 'logger'
11
10
  require 'date'
12
11
  require 'digest/md5'
13
12
 
13
+ require 'logger' # Note: use for ActiveRecord::Base.logger = Logger.new( STDOUT ) for now
14
+
14
15
 
15
16
  # 3rd party ruby gems/libs
16
17
 
17
- require 'active_record' ## todo: add sqlite3? etc.
18
+ require 'active_record'
18
19
 
19
20
  require 'logutils'
20
21
  require 'props' # manage settings/env
21
22
  require 'fetcher' # fetch (download) files
22
- require 'pakman' # template pack manager
23
23
  require 'feedutils'
24
24
  require 'textutils'
25
25
 
26
+ ## add more activerecords addons/utils
26
27
  require 'activityutils'
27
-
28
28
  require 'props/activerecord'
29
29
  require 'logutils/activerecord'
30
30
 
@@ -35,53 +35,76 @@ require 'pluto/version' # note: let version always get first
35
35
  require 'pluto/schema'
36
36
  require 'pluto/activerecord'
37
37
 
38
- require 'pluto/models/activity'
38
+ require 'pluto/models/forward'
39
39
  require 'pluto/models/feed'
40
40
  require 'pluto/models/item'
41
41
  require 'pluto/models/site'
42
42
  require 'pluto/models/subscription'
43
43
  require 'pluto/models/utils'
44
44
 
45
- require 'pluto/manifest_helpers'
46
45
  require 'pluto/connecter'
47
46
 
48
- require 'pluto/installer'
49
- require 'pluto/fetcher'
50
- require 'pluto/refresher'
51
- require 'pluto/subscriber'
52
- require 'pluto/updater'
53
- require 'pluto/lister'
54
- require 'pluto/formatter'
55
-
56
47
 
57
48
  module Pluto
58
49
 
59
- def self.connect!( config=nil ) # convenience shortcut
60
- Connecter.new.connect!( config )
50
+ def self.create
51
+ CreateDb.new.up
52
+ ConfDb::Model::Prop.create!( key: 'db.schema.planet.version', value: VERSION )
61
53
  end
62
54
 
63
-
64
- # todo: add alias update_site( config ) ??
65
- def self.update_subscriptions( config )
66
- Subscriber.new.update_subscriptions( config )
55
+ def self.create_all
56
+ LogDb.create # add logs table
57
+ ConfDb.create # add props table
58
+ ActivityDb::CreateDb.new.up # todo/check - use ActivityDb.create if exists???
59
+ Pluto.create
67
60
  end
68
61
 
69
- def self.update_feeds
70
- Refresher.new.update_feeds
71
- end
72
62
 
73
- def self.update_sites
74
- Refresher.new.update_sites
63
+ def self.auto_migrate!
64
+ # first time? - auto-run db migratation, that is, create db tables
65
+ unless LogDb::Model::Log.table_exists?
66
+ LogDb.create # add logs table
67
+ end
68
+
69
+ unless ConfDb::Model::Prop.table_exists?
70
+ ConfDb.create # add props table
71
+ end
72
+
73
+ ## fix: change to Model from Models
74
+ unless ActivityDb::Models::Activity.table_exists?
75
+ ActivityDb::CreateDb.new.up # todo/check - use ActivityDb.create if exists???
76
+ end
77
+
78
+ unless Model::Feed.table_exists?
79
+ Pluto.create
80
+ end
81
+ end # method auto_migrate!
82
+
83
+
84
+
85
+ def self.connect( config={} ) # convenience shortcut without (w/o) automigrate
86
+ Connecter.new.connect( config )
75
87
  end
76
88
 
77
- def self.load_tasks
78
- # load all builtin Rake tasks (from tasks/*rake)
79
- load 'pluto/tasks/env.rake'
80
- load 'pluto/tasks/setup.rake'
81
- load 'pluto/tasks/stats.rake'
82
- load 'pluto/tasks/update.rake'
89
+ def self.connect!( config={} ) # convenience shortcut w/ automigrate
90
+ Pluto.connect( config )
91
+ Pluto.auto_migrate!
83
92
  end
84
93
 
94
+
95
+ def self.setup_in_memory_db
96
+ # Database Setup & Config
97
+ ActiveRecord::Base.logger = Logger.new( STDOUT )
98
+ ## ActiveRecord::Base.colorize_logging = false - no longer exists - check new api/config setting?
99
+
100
+ Pluto.connect( adapter: 'sqlite3',
101
+ database: ':memory:' )
102
+
103
+ ## build schema
104
+ Pluto.create_all
105
+ end # setup_in_memory_dd
106
+
107
+
85
108
  end # module Pluto
86
109
 
87
110
 
@@ -1,5 +1,8 @@
1
+ # encoding: utf-8
2
+
3
+
1
4
  module Pluto
2
- module Models
5
+ module Model
3
6
 
4
7
  class Feed < ActiveRecord::Base
5
8
  self.table_name = 'feeds'
@@ -123,5 +126,5 @@ class Feed < ActiveRecord::Base
123
126
  end # class Feed
124
127
 
125
128
 
126
- end # module Models
129
+ end # module Model
127
130
  end # module Pluto
@@ -0,0 +1,20 @@
1
+ # encoding: utf-8
2
+
3
+ module Pluto
4
+ module Model
5
+
6
+ #######
7
+ # ActivityDB
8
+
9
+ # add shortcut/alias
10
+ ## fix: use Model instead of Models
11
+ Activity = ActivityDb::Models::Activity
12
+
13
+ end # module Model
14
+
15
+ # note: convenience alias for Model
16
+ # lets you use include Pluto::Models
17
+ Models = Model
18
+
19
+ end # module Pluto
20
+
@@ -1,5 +1,7 @@
1
+ # encoding: utf-8
2
+
1
3
  module Pluto
2
- module Models
4
+ module Model
3
5
 
4
6
  class Item < ActiveRecord::Base
5
7
  self.table_name = 'items'
@@ -69,5 +71,5 @@ class Item < ActiveRecord::Base
69
71
  end # class Item
70
72
 
71
73
 
72
- end # module Models
74
+ end # module Model
73
75
  end # module Pluto
@@ -1,5 +1,7 @@
1
+ # encoding: utf-8
2
+
1
3
  module Pluto
2
- module Models
4
+ module Model
3
5
 
4
6
  class Site < ActiveRecord::Base
5
7
  self.table_name = 'sites'
@@ -15,5 +17,5 @@ class Site < ActiveRecord::Base
15
17
 
16
18
  end
17
19
 
18
- end # module Models
20
+ end # module Model
19
21
  end # module Pluto
@@ -1,5 +1,7 @@
1
+ # encoding: utf-8
2
+
1
3
  module Pluto
2
- module Models
4
+ module Model
3
5
 
4
6
 
5
7
  class Subscription < ActiveRecord::Base
@@ -10,5 +12,5 @@ class Subscription < ActiveRecord::Base
10
12
  end
11
13
 
12
14
 
13
- end # module Models
15
+ end # module Model
14
16
  end # module Pluto
@@ -1,5 +1,7 @@
1
+ # encoding: utf-8
2
+
1
3
  module Pluto
2
- module Models
4
+ module Model
3
5
 
4
6
  class ItemCursor
5
7
 
@@ -43,5 +45,5 @@ class ItemCursor
43
45
  end # class ItemCursor
44
46
 
45
47
 
46
- end # module Models
48
+ end # module Model
47
49
  end # module Pluto
@@ -1,3 +1,4 @@
1
+ # encoding: utf-8
1
2
 
2
3
  module Pluto
3
4
 
@@ -3,7 +3,7 @@
3
3
  module Pluto
4
4
 
5
5
  MAJOR = 1
6
- MINOR = 1
6
+ MINOR = 2
7
7
  PATCH = 0
8
8
  VERSION = [MAJOR,MINOR,PATCH].join('.')
9
9
 
@@ -11,3 +11,16 @@ require 'pluto/models'
11
11
 
12
12
  LogUtils::Logger.root.level = :debug
13
13
 
14
+
15
+ ## some shortcuts
16
+ Log = LogDb::Model::Log
17
+ Prop = ConfDb::Model::Prop
18
+
19
+ Site = Pluto::Model::Site
20
+ Feed = Pluto::Model::Feed
21
+ Item = Pluto::Model::Item
22
+ Subscription = Pluto::Model::Subscription
23
+
24
+
25
+ Pluto.setup_in_memory_db
26
+
@@ -12,11 +12,26 @@ class TestHelper < MiniTest::Test
12
12
 
13
13
  ## add some tests; to be done
14
14
 
15
- def test_banner
15
+ def test_banner
16
16
  puts Pluto.banner
17
-
18
- assert true
17
+
18
+ assert true ## if we get here it should workd
19
19
  end
20
20
 
21
+ def test_models
22
+ assert_equal 1, Prop.count
23
+ assert_equal 0, Log.count
24
+
25
+ assert_equal 0, Site.count
26
+ assert_equal 0, Feed.count
27
+ assert_equal 0, Item.count
28
+ assert_equal 0, Subscription.count
29
+ end
30
+
31
+ def test_auto_migrate
32
+ Pluto.auto_migrate!
33
+
34
+ assert true ## if we get here it should workd
35
+ end
21
36
 
22
37
  end # class TestHelper