<< | Index | >>
suspend
suspend
suspend
suspend
suspend
bin/admin
ch.oddb> ODDB::MiGeLPlugin.new(self).update_items_by_migel true -> undefined method `update_values' for []:Array
Console
474 / 571 Estimate total: 7.38 [h] It will be done in: 1.25 [h] 475 / 571 Estimate total: 7.37 [h] It will be done in: 1.24 [h] failsafe rescued NoMethodError < StandardError undefined method `update_values' for []:Array /home/masa/ywesee/oddb.org/src/util/oddbapp.rb:1434:in `_admin' /usr/lib64/ruby/site_ruby/1.8/odba/stub.rb:141:in `method_missing' /home/masa/ywesee/oddb.org/src/util/language.rb:66:in `update_values' /home/masa/ywesee/oddb.org/src/util/persistence.rb:278:in `issue_update' /home/masa/ywesee/oddb.org/src/util/oddbapp.rb:119:in `update' /home/masa/ywesee/oddb.org/src/util/failsafe.rb:9:in `call' /home/masa/ywesee/oddb.org/src/util/failsafe.rb:9:in `failsafe' /home/masa/ywesee/oddb.org/src/util/oddbapp.rb:118:in `update' /home/masa/ywesee/oddb.org/src/util/oddbapp.rb:1415:in `update' /home/masa/ywesee/oddb.org/src/plugin/migel.rb:257:in `update_item' /home/masa/ywesee/oddb.org/src/plugin/migel.rb:195:in `update_items_by_migel' /home/masa/ywesee/oddb.org/src/plugin/migel.rb:193:in `each' /home/masa/ywesee/oddb.org/src/plugin/migel.rb:193:in `update_items_by_migel' /usr/lib64/ruby/1.8/drb/drb.rb:557:in `each_with_index' /home/masa/ywesee/oddb.org/src/plugin/migel.rb:189:in `each' /home/masa/ywesee/oddb.org/src/plugin/migel.rb:189:in `each_with_index' /home/masa/ywesee/oddb.org/src/plugin/migel.rb:189:in `update_items_by_migel' (eval):1:in `_admin' /home/masa/ywesee/oddb.org/src/util/failsafe.rb:9:in `call' /home/masa/ywesee/oddb.org/src/util/failsafe.rb:9:in `failsafe' /home/masa/ywesee/oddb.org/src/util/oddbapp.rb:1433:in `_admin' /home/masa/ywesee/oddb.org/src/util/oddbapp.rb:1431:in `initialize' /home/masa/ywesee/oddb.org/src/util/oddbapp.rb:1431:in `new' /home/masa/ywesee/oddb.org/src/util/oddbapp.rb:1431:in `_admin' /usr/lib64/ruby/1.8/drb/drb.rb:1555:in `__send__' /usr/lib64/ruby/1.8/drb/drb.rb:1555:in `perform_without_block' /usr/lib64/ruby/1.8/drb/drb.rb:1515:in `perform' /usr/lib64/ruby/1.8/drb/drb.rb:1589:in `main_loop' /usr/lib64/ruby/1.8/drb/drb.rb:1585:in `loop' /usr/lib64/ruby/1.8/drb/drb.rb:1585:in `main_loop' /usr/lib64/ruby/1.8/drb/drb.rb:1581:in `start' /usr/lib64/ruby/1.8/drb/drb.rb:1581:in `main_loop' /usr/lib64/ruby/1.8/drb/drb.rb:1430:in `run' /usr/lib64/ruby/1.8/drb/drb.rb:1427:in `start' /usr/lib64/ruby/1.8/drb/drb.rb:1427:in `run' /usr/lib64/ruby/1.8/drb/drb.rb:1347:in `initialize' /usr/lib64/ruby/1.8/drb/drb.rb:1627:in `new' /usr/lib64/ruby/1.8/drb/drb.rb:1627:in `start_service' bin/oddbd:38
Check all the item instances
ch.oddb> c=0; migel_products.each{|pr| if items=pr.items then c+=items.values.select{|it| it.is_a?(ODDB::Migel::Item)}.length end}; c
-> 29943
ch.oddb> c=0; migel_products.each{|pr| if items=pr.items then c+=items.values.select{|it| (it.is_a?(Array) or it.is_a?(Part) or it.is_a?(Package) or it.is_a?(ActiveAgent) or it.is_a?(Composition) or it.is_a?(Hash) or it.is_a?(Sequence)) and it.is_a?(ODDB::Migel::Item)}.length end}; c
-> 41
Note
suspend
Experiment
suspend
masa@masa ~/ywesee $ sudo -u postgres createdb -E UTF8 -T template0 migel
Passwort:
masa@masa ~/ywesee $ psql -U postgres
psql (8.4.2)
Geben Sie »help« für Hilfe ein.
postgres=# \l
Liste der Datenbanken
Name | Eigentümer | Kodierung | Sortierfolge | Zeichentyp | Zugriffsrechte
--------------------+-------------+-----------+--------------+------------+-----------------------
ch_oddb_org | postgres | UTF8 | C | C |
migel | postgres | UTF8 | C | C |
...
Note
#!/usr/bin/env ruby
# encoding: utf-8
# MigelDrbServer -- migel -- 17.08.2011 -- mhatakeyama@ywesee.com
$: << File.expand_path('../lib', File.dirname(__FILE__))
require 'rclconf'
require 'drb'
require 'migel/server'
default_dir = File.expand_path('../etc', File.dirname(__FILE__))
default_config_files = [
File.join(default_dir, 'migel.yml'), '/etc/migel/migel.yml',
]
defaults = {
'config' => default_config_files,
'db_name' => 'migel',
'db_user' => 'migel',
'db_auth' => 'migel',
'persistence' => 'odba',
'server_url' => 'druby://localhost:11000',
'migel_dir' => default_dir,
}
config = RCLConf::RCLConf.new(ARGV, defaults)
config.load(config.config)
require File.join('migel', 'persistence', config.persistence)
persistence = nil
require 'odba/connection_pool'
require 'odba/drbwrapper'
DRb.install_id_conv ODBA::DRbIdConv.new
ODBA.storage.dbi = ODBA::ConnectionPool.new("DBI:pg:#{config.db_name}", config.db_user, config.db_auth)
ODBA.cache.setup
persistence = Migel::Persistence::Odba.new
begin
#server = Yus::Server.new(persistence, config, logger)
server = Migel::Server.new
server.extend(DRbUndumped)
url = config.server_url
drbconf = {}
url.untaint
DRb.start_service(url, server, drbconf)
$SAFE = 1
DRb.thread.join
rescue Exception => error
raise
end
#!/usr/bin/env ruby # Migel::Server -- migel -- 17.08.2011 -- mhatakeyama@ywesee.com require 'drb' #require 'yus/entity' #require 'yus/session' require 'needle' VERSION = '1.0.0' module Migel class Server end end
#!/usr/bin/env ruby
# Migel::Persistence::ODBA -- migel -- 17.08.2011 -- mhatakeyama@ywesee.com
require 'odba'
require 'odba/drbwrapper'
module Migel
module Persistence
class Odba
def initialize
@system = ODBA.cache.fetch_named('system', self) { Hash.new }
end
end
end
end
--- db_user: 'postgres' db_auth: ''
Run
masa@masa ~/ywesee/migel $ bin/migeld /home/masa/ywesee/migel/lib/migel/server.rb:9: warning: already initialized constant VERSION NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "object_pkey" for table "object" NOTICE: CREATE TABLE / UNIQUE will create implicit index "object_name_key" for table "object" NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "object_connection_pkey" for table "object_connection" NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "collection_pkey" for table "collection"
Note
Question
Refactoring
#!/usr/bin/env ruby
# encoding: utf-8
# MigelDrbServer -- migel -- 17.08.2011 -- mhatakeyama@ywesee.com
$: << File.expand_path('../lib', File.dirname(__FILE__))
$KCODE = 'u'
require 'drb'
require 'migel/config'
require 'migel/persistence'
require 'migel/util'
module Migel
begin
server = Migel::Util::Server.new
server.extend(DRbUndumped)
@server = server
url = @config.server_url
url.untaint
DRb.start_service(url, server)
$SAFE = 1
# logger.info('start') { sprintf("starting oddb-server on %s", url) }
DRb.thread.join
rescue Exception => error
# logger.error('fatal') { error }
raise
end
end
#!/usr/bin/env ruby
# Migel -- migel -- 17.08.2011 -- mhatakeyama@ywesee.com
module Migel
VERSION = '1.0.0'
# Migel_VERSION =
# File.read(File.expand_path('../.git/refs/heads/master',
# File.dirname(__FILE__)))
class << self
attr_accessor :config, :logger, :persistence, :server
end
end
#!/usr/bin/env ruby
# Migel@config -- migel -- 17.08.2011 -- mhatakeyama@ywesee.com
require 'rclconf'
require 'migel'
module Migel
default_dir = File.expand_path('../../etc', File.dirname(__FILE__))
default_config_files = [
File.join(default_dir, 'migel.yml'), '/etc/migel/migel.yml',
]
defaults = {
'config' => default_config_files,
'db_name' => 'migel',
'db_user' => 'migel',
'db_auth' => 'migel',
'persistence' => 'odba',
'server_url' => 'druby://localhost:33000',
'migel_dir' => default_dir,
}
config = RCLConf::RCLConf.new(ARGV, defaults)
config.load(config.config)
@config = config
end
require 'migel/config'
module Migel
require File.join('migel', 'persistence', @config.persistence)
persistence = nil
DRb.install_id_conv ODBA::DRbIdConv.new
@persistence = Migel::Persistence::ODBA
end
#!/usr/bin/env ruby # Util -- migel -- 17.08.2011 -- mhatakeyama@ywesee.com require 'migel/util/server'
#!/usr/bin/env ruby
# Migel::Persistence::ODBA -- migel -- 17.08.2011 -- mhatakeyama@ywesee.com
require 'migel/config'
require 'odba'
require 'odba/connection_pool'
require 'odba/drbwrapper'
module Migel
module Persistence
module ODBA
end
end
ODBA.storage.dbi = ODBA::ConnectionPool.new("DBI:pg:#{@config.db_name}",
@config.db_user, @config.db_auth)
ODBA.cache.setup
end
#!/usr/bin/env ruby
# enconding: utf-8
# Migel::Util::Server -- migel -- 17.08.2011 -- mhatakeyama@ywesee.com
require 'sbsm/drbserver'
module Migel
module Util
class Server < SBSM::DRbServer
end
end
end
Run
masa@masa ~/ywesee/migel $ bin/migeld /home/masa/ywesee/migel/lib/migel.rb:4: warning: already initialized constant VERSION NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "object_pkey" for table "object" NOTICE: CREATE TABLE / UNIQUE will create implicit index "object_name_key" for table "object" NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "object_connection_pkey" for table "object_connection" NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "collection_pkey" for table "collection"
Next
def _admin(src, result, priority=0)
raise "admin interface disabled" unless(self::class::ENABLE_ADMIN)
t = Thread.new {
Thread.current.abort_on_exception = false
begin
response = instance_eval(src)
str = response.to_s
result << if(str.length > 200)
response.class
else
str
end.to_s
rescue StandardError => error
result << error.message
require 'pp'
# ODDB.logger.error('admin') { error.class }
# ODDB.logger.error('admin') { error.message }
# ODDB.logger.error('admin') { error.backtrace.pretty_inspect }
error
end
}
t[:source] = src
t.priority = priority
@admin_threads.add(t)
t
end
Result
masa@masa ~/ywesee/migel $ bin/admin migel> Migel::VERSION -> 1.0.0
Next
#!/usr/bin/env ruby # Util -- migel -- 17.08.2011 -- mhatakeyama@ywesee.com require 'migel/util/logger' require 'migel/util/server'
module Migel
begin
server = Migel::Util::Server.new
server.extend(DRbUndumped)
@server = server
url = @config.server_url
url.untaint
DRb.start_service(url, server)
$SAFE = 1
logger.info('start') { sprintf("starting oddb-server on %s", url) }
DRb.thread.join
rescue => error
logger.error('fatal') { error }
raise
end
end
Run
masa@masa ~/ywesee/migel $ bin/migeld
ERROR: relation "object" already exists
ERROR: relation "prefetchable_index" already exists
ERROR: relation "extent_index" already exists
ERROR: relation "object_connection" already exists
ERROR: relation "target_id_index" already exists
ERROR: relation "collection" already exists
I, [2011-08-17T11:19:43.678885 #28584] INFO -- start: starting oddb-server on druby://localhost:33000
Base classes
#!/usr/bin/env ruby
# Migel::Model::Group -- oddb -- 13.09.2005 -- ffricker@ywesee.com
#$: << File.expand_path("../../../src", File.dirname(__FILE__))
module Migel
module Model
class Group < Migel::SuperModel
attr_reader :subgroups, :code
attr_accessor :limitation_text, :group
alias :pointer_descr :code
end
end
end
require 'migel/model_super' require 'migel/model/group'
require 'migel/model'
Run
masa@masa ~/ywesee/migel $ bin/admin migel> Migel::Model::Group.class -> Class migel> a = Migel::Model::Group.new; -> #<Migel::Model::Group:0x7fdd57930238>
suspend
Probably
#!/usr/bin/env ruby
# Migel::Model::Group -- migel -- 17.98.2011 -- mhatakeyama@ywesee.com
require 'migel/model/group'
require 'migel/persistence/odba/model_super'
module Migel
module Model
class Group < ModelSuper
odba_index :code
end
end
end
require 'migel/persistence/odba/model/group'
Run
masa@masa ~/ywesee/migel $ bin/admin migel> a=Migel::Model::Group.new; a.code='999'; a.save; a.uid -> 13 migel> a=ODBA.cache.fetch(13); a.code -> 999 migel> exit -> Goodbye
masa@masa ~/ywesee/migel $ bin/admin migel> a=ODBA.cache.fetch(13); a.code -> 999
Question
suspend
migel> a=ODBA.cache.fetch(13); a.code -> 999 migel> a=ODBA.cache.fetch(13); a.delete -> #<Migel::Model::Group:0x7f03d5e24c00> migel> a=ODBA.cache.fetch(13); a.code -> /usr/lib64/ruby/site_ruby/1.8/odba/cache.rb:626:in `restore_object': Unknown odba_id 13 migel> a=Migel::Model::Group.new; a.code='888'; a.save; a.uid -> 13 migel> a=ODBA.cache.fetch(13); a.code -> 888
#!/usr/bin/env ruby
# Migel::Model::Group -- migel -- 17.08.2011 -- mhatakeyama@ywesee.com
module Migel
module Model
class Group < Migel::ModelSuper
attr_accessor :code, :limitation_text
has_many :subgroups, on_delete(:cascade), on_save(:cascade)
multilingual :limitation_text
alias :pointer_descr :code
end
end
end
#!/usr/bin/env ruby
# Migel::Model::Subgroup -- migel -- 17.08.2011 -- mhatakeyama@ywesee.com
module Migel
module Model
class Subgroup < Migel::ModelSuper
belongs_to :group
attr_accessor :code
end
end
end
#!/usr/bin/env ruby # enconding: utf-8 # Model -- migel -- 17.08.2011 -- mhatakeyama@ywesee.com require 'migel/model_super' require 'migel/model/group' require 'migel/model/subgroup'
Run
migel> a=Migel::Model::Group.new; a.code = '111'; a.save; a.uid -> 21 migel> a=ODBA.cache.fetch(21); a.code -> 111 migel> a=ODBA.cache.fetch(21); a.subgroups.push Migel::Model::Subgroup.new -> #<Migel::Model::Subgroup:0x7f0494cfdad8> migel> a=ODBA.cache.fetch(21); a.subgroups[0].code = '222' -> 222 migel> a=ODBA.cache.fetch(21); a.subgroups[0].code -> 222 migel> a=ODBA.cache.fetch(21); a.save ->
migel> a=ODBA.cache.fetch(21); a.subgroups[0].code -> 222
#!/usr/bin/env ruby
# encoding: utf-8
# Migel::Model::Migelid -- migel -- 17.08.2011 -- mhatakeyama@ywesee.com
module Migel
module Model
class Migelid < Migel::ModelSuper
belongs_to :subgroup
has_many :products, on_delete(:cascade), on_save(:cascade)
has_many :accessories
attr_accessor :limitation, :price, :type, :date, :qty, :unit, :code, :product_text
alias :pointer_descr :code
multilingual :limitation_text
multilingual :product_text
end
end
end
#!/usr/bin/env ruby
# encondig: utf-8
# Migel::Model::Product -- migel -- 17.08.2011 -- mhatakeyama@ywesee.com
module Migel
module Model
class Product < Migel::ModelSuper
belongs_to :migelid, delegates(:price, :qty, :unit, :migel_code)
attr_accessor :ean_code, :pharmacode, :article_name, :companyname, :companyean, :ppha, :ppub, :factor, :pzr, :size, :status, :datetime, :stdate, :language
alias :pointer_descr :migel_code
end
end
end
migel> a=ODBA.cache.fetch(26); a.products[0].migelid.class -> Migel::Model::Migelid migel> a=ODBA.cache.fetch(26); a.products[0].qty -> migel> a=ODBA.cache.fetch(26); a.products[0].qty.class -> NilClass migel> a=ODBA.cache.fetch(26); a.qty = 'qty' -> qty migel> a=ODBA.cache.fetch(26); a.products[0].qty -> qty