<< | Index | >>
Error
ch.oddb> Updater.new(self).update_package_trade_status_by_swissindex true -> undefined local variable or method `pharmacode' for #<ODDB::SwissindexPlugin:0x7f6b130a0db8>
init system
init system: 4.21494
setup drb-delegation
reset
reset: 4.226361
system initialized
initialized: 4.226438
WARNING: nonstandard use of \' in a string literal
LINE 3: AND search_term = 'fraxiparine multi, 9\'500 u.i. an...
^
HINT: Use '' to write quotes in strings, or use the escape string syntax (E'...').
failsafe rescued NameError < StandardError
undefined local variable or method `pharmacode' for #<ODDB::SwissindexPlugin:0x7f6b130a0db8>
/home/masa/ywesee/oddb.org/src/util/oddbapp.rb:1418:in `_admin'
/home/masa/ywesee/oddb.org/src/plugin/swissindex.rb:117:in `each'
/home/masa/ywesee/oddb.org/src/plugin/swissindex.rb:117:in `update_pharmacode_by_swissindex'
/home/masa/ywesee/oddb.org/src/plugin/swissindex.rb:101:in `update_package_trade_status'
/home/masa/ywesee/oddb.org/src/util/updater.rb:505:in `update_package_trade_status_by_swissindex'
(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:1417:in `_admin'
/home/masa/ywesee/oddb.org/src/util/oddbapp.rb:1415:in `initialize'
/home/masa/ywesee/oddb.org/src/util/oddbapp.rb:1415:in `new'
/home/masa/ywesee/oddb.org/src/util/oddbapp.rb:1415: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
Log
The error part (src/plugin/swissindex.rb#update_pharmacode_by_swissindex)
def update_pharmacode_by_swissindex(update_pharmacode_list, delete_pharmacode_list, logging = false)
log_dir = File.expand_path('../../log/oddb/debug', File.dirname(__FILE__))
log_file = File.join(log_dir, 'update_pharmacode_by_swissindex.log')
log = open(log_file, 'w')
if logging
log.print Time.now, "\n"
log.print "update_pharmacode\n"
end
update_pharmacode_list.each do |pack, pharmacode|
@app.update(pack.pointer, {:pharmacode => pharmacode}, :bag)
log.print pack.barcode, "\t", pharmacode, "\n" if logging
end
log.print "\ndelete_pharmacode\n" if logging
delete_pharmacode_list.each do |pack|
@app.update(pack.pointer, {:pharmacode => nil}, :bag)
log.print pack.barcode, "\t", pharmacode, "\n" if logging
end
log.close
end
Debug
def update_pharmacode_by_swissindex(update_pharmacode_list, delete_pharmacode_list, logging = false)
log_dir = File.expand_path('../../log/oddb/debug', File.dirname(__FILE__))
log_file = File.join(log_dir, 'update_pharmacode_by_swissindex.log')
log = open(log_file, 'w')
if logging
log.print Time.now, "\n"
log.print "update_pharmacode\n"
end
update_pharmacode_list.each do |pack, pharmacode|
@app.update(pack.pointer, {:pharmacode => pharmacode}, :bag)
log.print pack.barcode, "\t", pharmacode, "\n" if logging
end
log.print "\ndelete_pharmacode\n" if logging
delete_pharmacode_list.each do |pack, pharmacode|
@app.update(pack.pointer, {:pharmacode => nil}, :bag)
log.print pack.barcode, "\t", pharmacode, "\n" if logging
end
log.close
end
Check the algorithm again
if(results.size == 0 && !pack.out_of_trade)
update_package_data(pack, {:out_of_trade => true})
elsif(results.size == 1 && pack.out_of_trade)
data = {:out_of_trade => false, :refdata_override => false}
update_package_data(pack, data)
else
Logic
3 kinds of report methods are prepared in src/util/updater.rb
Note
Updates
Run (It takes 6 hours)
masa@masa ~/ywesee/oddb.org $ bin/admin ch.oddb> Updater.new(self).update_package_trade_status_by_swissindex true
Result
Sample (Logging class)
require 'fileutils'
class Logging
@@flag = false
def Logging.flag=(bool)
@@flag = bool
end
def Logging.flag
@@flag
end
def Logging.start(file)
if @@flag
FileUtils.mkdir_p(File.dirname(file))
log_file = File.open(file, 'w')
log_file.print "# ", Time.now, "\n"
yield(log_file)
log_file.close
end
end
def Logging.append(file)
if @@flag
FileUtils.mkdir_p(File.dirname(file))
log_file = File.open(file, 'a')
yield(log_file)
log_file.close
end
end
end
Logging.start('testdir/test.dat') do |log|
log.print "test1\n"
end
Logging::flag = true
Logging.start('testdir/test.dat') do |log|
log.print "test2\n"
end
Logging.append('testdir/test.dat') do |log|
log.print "test3\n"
end
Result
masa@masa ~/work $ ruby test.rb masa@masa ~/work $ cat testdir/test.dat # Mon May 09 13:56:20 +0200 2011 test2 test3
Updated
Run
ch.oddb> Updater.new(self).update_package_trade_status true ch.oddb> Updater.new(self).migel_nonpharma 'home/masa/work/pharmacode_list.dat'
Note
ch.oddb> Updater.new(self).update_package_trade_status
Result