skynet-core 0.0.3 → 0.0.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.
data/Rakefile CHANGED
@@ -1,16 +1,33 @@
1
1
  require 'rubygems'
2
2
  require 'rake'
3
- require 'echoe'
4
3
 
5
- Echoe.new('skynet-core', '0.0.3') do |s|
6
- s.description = "Datamining Bot"
7
- s.url = "http://github.com/a2c/skynet-core"
8
- s.author = "Henry Hamon"
9
- s.email = "henry.hamon@a2c.com.br"
10
- s.ignore_pattern = ["tmp/*", "script/*"]
11
- s.runtime_dependencies = ["json", "nokogiri",
12
- "mechanize", "activerecord", "simpleconsole"]
13
- s.development_dependencies = ["rspec"]
14
- end
4
+ # task :default => :gem
5
+ #
6
+ # task :gem do
7
+ require 'echoe'
8
+ Echoe.new('skynet-core', '0.0.4') do |s|
9
+ s.description = "Datamining Bot"
10
+ s.url = "http://github.com/a2c/skynet-core"
11
+ s.author = "Henry Hamon"
12
+ s.email = "henry.hamon@a2c.com.br"
13
+ s.ignore_pattern = ["tmp/*", "script/*"]
14
+ s.runtime_dependencies = ["json", "nokogiri", "mechanize", "activerecord"]
15
+ s.development_dependencies = ["rspec"]
16
+ end
15
17
 
16
- Dir["#{File.dirname(__FILE__)}/tasks/*.rake"].sort.each { |ext| load ext }
18
+ Dir["#{File.dirname(__FILE__)}/tasks/*.rake"].sort.each { |ext| load ext }
19
+ # end
20
+ #
21
+ # desc "Migrate the database through scripts in db/migrate. Target specific version with VERSION=x"
22
+ # task :migrate => :environment do
23
+ # ActiveRecord::Migrator.migrate('lib/skynet-core/db/migrate', ENV["VERSION"] ? ENV["VERSION"].to_i : nil )
24
+ # end
25
+ #
26
+ # task :environment do
27
+ # require 'active_record'
28
+ # require 'yaml'
29
+ #
30
+ # database_config = YAML::load(File.open('config/database.yml'))
31
+ # ActiveRecord::Base.establish_connection database_config[ENV["ENV"] ? ENV["ENV"] : "development"]["skynet"]
32
+ # end
33
+ #
@@ -1,10 +1,6 @@
1
1
  development:
2
2
  skynet:
3
- adapter: mysql
4
- database: skynet_staging
5
- username: root
6
- password: toor
7
- encoding: utf8
3
+ path: '/home/henry/workspace/db/skynet.db'
8
4
 
9
5
  ibrands:
10
6
  adapter: mysql
@@ -16,14 +12,7 @@ development:
16
12
 
17
13
  production:
18
14
  skynet:
19
- adapter: mysql
20
- encoding: utf8
21
- database: skynet
22
- username: skynet
23
- password: "MXQuE4KW9NhjEr7t"
24
- host: "vps3.clubedeautores.com.br"
25
- port: 3300
26
- # socket: /var/run/mysqld/mysqld.sock
15
+ path: '/home/henry/workspace/db/skynet.db'
27
16
 
28
17
  ibrands:
29
18
  adapter: mysql
@@ -1,4 +1,5 @@
1
1
  require "#{SKYNET_ROOT}/lib/skynet-core/db/ibrands"
2
+ require "#{SKYNET_ROOT}/lib/skynet-core/db/hippocampus"
2
3
 
3
4
  module Skynet
4
5
  extend self
@@ -1,12 +1,70 @@
1
1
  require File.expand_path("#{File.dirname(__FILE__)}/../../skynet-core")
2
- require 'activerecord'
2
+ require 'xapian-fu'
3
+ include XapianFu
3
4
 
4
- Skynet.load_config
5
- unless Skynet.database_config.nil?
6
- ActiveRecord::Base.establish_connection( Skynet.database_config[Skynet.app_config['enviroment']]['skynet'] )
5
+ module Skynet
6
+ extend self
7
+
8
+ class Queue
9
+ attr_accessor :url, :source, :post, :author, :description, :brand_id, :tracked_network_id,
10
+ :network_type, :slot_1, :slot_2, :slot_3, :integrated, :published_at,
11
+ :created_at
12
+
13
+ def initialize(attributes = nil)
14
+ self.attributes = attributes unless attributes.nil?
15
+ end
16
+
17
+ def save
18
+ output = false
19
+ if uniqueness?
20
+ Skynet.queue << to_hash
21
+ Skynet.queue.flush
22
+ output = true
23
+ end if required?
24
+ output
25
+ end
26
+
27
+ def self.create(attributes = nil)
28
+ if attributes.is_a?(Array)
29
+ attributes.collect { |attr| create(attr) }
30
+ else
31
+ object = new(attributes)
32
+ object.save
33
+ object
34
+ end
35
+ end
36
+
37
+ protected
38
+
39
+ def attributes=(value)
40
+ value.each_pair do |key, value|
41
+ begin
42
+ instance_variable_set("@#{key}", value)
43
+ rescue
44
+ puts 'attribute not found'
45
+ end
46
+ end
47
+ end
48
+
49
+ def to_hash
50
+ {
51
+ :url => self.url, :source => self.source , :post => self.post.nil? ? '' : self.post,
52
+ :author => self.author.nil? ? '' : self.author, :description => self.description.nil? ? '' : self.description,
53
+ :brand_id => self.brand_id ,
54
+ :tracked_network_id => self.tracked_network_id , :network_type => self.network_type ,
55
+ :slot_1 => self.slot_1.nil? ? 0 : self.slot_1, :slot_2 => self.slot_2.nil? ? 0 : self.slot_2,
56
+ :slot_3 => self.slot_3.nil? ? 0 : self.slot_3,
57
+ :integrated => 0, :published_at => self.published_at, :created_at => DateTime.now
58
+ }
59
+ end
60
+
61
+ def uniqueness?
62
+ Skynet.queue.search("url:#{self.url.gsub('+','>')} network_type:#{self.network_type}").size < 1
63
+ end
64
+
65
+ def required?
66
+ !self.tracked_network_id.nil? || !self.url.nil? || !self.network_type.nil?
67
+ end
7
68
 
8
- class Memory < ActiveRecord::Base
9
- validates_presence_of :url
10
- validates_uniqueness_of :url, :scope => :tracked_network_id
11
69
  end
12
70
  end
@@ -1,9 +1,5 @@
1
- require 'rubygems'
2
- require 'activerecord'
3
- require 'lib/skynet/hippocampus'
4
-
5
- #ActiveRecord::Schema.define do
6
1
  class CreateMemoriesAndLogs < ActiveRecord::Migration
2
+ def self.up
7
3
 
8
4
  create_table :memories do |t|
9
5
  t.column :brand_id, :integer
@@ -32,5 +28,13 @@ class CreateMemoriesAndLogs < ActiveRecord::Migration
32
28
  table.column :created_at, :datetime
33
29
  end
34
30
 
35
- end
36
31
 
32
+ end
33
+
34
+ def self.down
35
+ remove_index :memories, [:url, :tracked_network_id]
36
+ drop_table :memories
37
+ drop_table :logs
38
+
39
+ end
40
+ end
@@ -1,5 +1,7 @@
1
1
  require "#{SKYNET_ROOT}/lib/skynet-core"
2
2
  require "#{SKYNET_ROOT}/lib/skynet-core/db/ibrands"
3
+ require "#{SKYNET_ROOT}/lib/skynet-core/db/hippocampus"
4
+
3
5
  require 'open-uri'
4
6
 
5
7
  module Skynet
data/lib/skynet-core.rb CHANGED
@@ -1,6 +1,9 @@
1
1
  require "rubygems"
2
2
  require "yaml"
3
3
 
4
+ require 'xapian-fu'
5
+ include XapianFu
6
+
4
7
  SKYNET_ROOT = File.expand_path("#{File.dirname(__FILE__)}/..") unless defined?(SKYNET_ROOT)
5
8
 
6
9
  Dir[File.dirname(__FILE__) + '/skynet-core/*.rb'].each {|file| require file }
@@ -10,7 +13,7 @@ SKYNET_ENV = ENV["SKYNET_ENV"] ||= ENV["RACK_ENV"] ||= "development" unless defi
10
13
  #
11
14
  module Skynet
12
15
 
13
- attr_reader :_app_config, :_database_config
16
+ attr_reader :_app_config, :_database_config, :_queue
14
17
 
15
18
  class ApplicationLoadError < RuntimeError #:nodoc:
16
19
  end
@@ -56,6 +59,10 @@ module Skynet
56
59
  @_database_config ||= set_database_config
57
60
  end
58
61
 
62
+ def queue
63
+ @_queue ||= load_queue_database
64
+ end
65
+
59
66
  def require_dependencies(*paths)
60
67
  # Extract all files to load
61
68
  files = paths.map { |path| Dir[path] }.flatten
@@ -107,5 +114,32 @@ module Skynet
107
114
  YAML::load(File.open(root("config/database.yml"))) if File.exist?(root("config/database.yml"))
108
115
  end
109
116
 
117
+ def load_queue_database
118
+
119
+ XapianDb.new(:dir => self.database_config[self.app_config['enviroment']]['skynet']['path'], :create => true,
120
+ :fields => {
121
+ :url => { :store => true },
122
+ :source => { :store => true },
123
+ :post => { :store => true },
124
+ :author => { :store => true },
125
+ :description => { :store => true },
126
+ :brand_id => { :type => Integer, :store => true },
127
+ :tracked_network_id => { :type => Integer, :store => true },
128
+ :network_type => { :type => Integer, :store => true },
129
+ :slot_1 => { :type => Integer, :store => true },
130
+ :slot_2 => { :type => Integer, :store => true },
131
+ :slot_3 => { :type => Integer, :store => true },
132
+ :integrated => { :type => Integer, :store => true },
133
+ :published_at => { :type => DateTime, :store => true },
134
+ :created_at => { :type => DateTime, :store => true }
135
+ }, :store => [
136
+ :url, :source, :post, :author, :description, :brand_id, :tracked_network_id,
137
+ :network_type, :slot_1, :slot_2, :slot_3, :integrated, :published_at,
138
+ :created_at
139
+ ]
140
+ ) unless @_database_config.nil? & self.database_config[self.app_config['enviroment']]['skynet'].nil?
141
+
142
+ end
143
+
110
144
  end # self
111
145
  end
data/skynet-core.gemspec CHANGED
@@ -2,11 +2,11 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{skynet-core}
5
- s.version = "0.0.3"
5
+ s.version = "0.0.4"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
8
8
  s.authors = ["Henry Hamon"]
9
- s.date = %q{2010-06-09}
9
+ s.date = %q{2010-06-11}
10
10
  s.description = %q{Datamining Bot}
11
11
  s.email = %q{henry.hamon@a2c.com.br}
12
12
  s.extra_rdoc_files = ["README.mkdn", "lib/skynet-core.rb", "lib/skynet-core/cyberdyne.rb", "lib/skynet-core/db/hippocampus.rb", "lib/skynet-core/db/ibrands.rb", "lib/skynet-core/db/migrate/001_create_actives_and_logs.rb", "lib/skynet-core/db/migrate/002_pimp_log.rb", "lib/skynet-core/db/migration.rb", "lib/skynet-core/extend_string.rb", "lib/skynet-core/harvest.rb"]
@@ -27,14 +27,12 @@ Gem::Specification.new do |s|
27
27
  s.add_runtime_dependency(%q<nokogiri>, [">= 0"])
28
28
  s.add_runtime_dependency(%q<mechanize>, [">= 0"])
29
29
  s.add_runtime_dependency(%q<activerecord>, [">= 0"])
30
- s.add_runtime_dependency(%q<simpleconsole>, [">= 0"])
31
30
  s.add_development_dependency(%q<rspec>, [">= 0"])
32
31
  else
33
32
  s.add_dependency(%q<json>, [">= 0"])
34
33
  s.add_dependency(%q<nokogiri>, [">= 0"])
35
34
  s.add_dependency(%q<mechanize>, [">= 0"])
36
35
  s.add_dependency(%q<activerecord>, [">= 0"])
37
- s.add_dependency(%q<simpleconsole>, [">= 0"])
38
36
  s.add_dependency(%q<rspec>, [">= 0"])
39
37
  end
40
38
  else
@@ -42,7 +40,6 @@ Gem::Specification.new do |s|
42
40
  s.add_dependency(%q<nokogiri>, [">= 0"])
43
41
  s.add_dependency(%q<mechanize>, [">= 0"])
44
42
  s.add_dependency(%q<activerecord>, [">= 0"])
45
- s.add_dependency(%q<simpleconsole>, [">= 0"])
46
43
  s.add_dependency(%q<rspec>, [">= 0"])
47
44
  end
48
45
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: skynet-core
3
3
  version: !ruby/object:Gem::Version
4
- hash: 25
4
+ hash: 23
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 3
10
- version: 0.0.3
9
+ - 4
10
+ version: 0.0.4
11
11
  platform: ruby
12
12
  authors:
13
13
  - Henry Hamon
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-06-09 00:00:00 -03:00
18
+ date: 2010-06-11 00:00:00 -03:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -74,24 +74,10 @@ dependencies:
74
74
  version: "0"
75
75
  type: :runtime
76
76
  version_requirements: *id004
77
- - !ruby/object:Gem::Dependency
78
- name: simpleconsole
79
- prerelease: false
80
- requirement: &id005 !ruby/object:Gem::Requirement
81
- none: false
82
- requirements:
83
- - - ">="
84
- - !ruby/object:Gem::Version
85
- hash: 3
86
- segments:
87
- - 0
88
- version: "0"
89
- type: :runtime
90
- version_requirements: *id005
91
77
  - !ruby/object:Gem::Dependency
92
78
  name: rspec
93
79
  prerelease: false
94
- requirement: &id006 !ruby/object:Gem::Requirement
80
+ requirement: &id005 !ruby/object:Gem::Requirement
95
81
  none: false
96
82
  requirements:
97
83
  - - ">="
@@ -101,7 +87,7 @@ dependencies:
101
87
  - 0
102
88
  version: "0"
103
89
  type: :development
104
- version_requirements: *id006
90
+ version_requirements: *id005
105
91
  description: Datamining Bot
106
92
  email: henry.hamon@a2c.com.br
107
93
  executables: []