< Niklaus.20200615-migel-utf-8-ruby-271 | Index | Niklaus.20190528-upgrades-fixes >>
Installing uby-2.7.1 using /usr/local/src/gen_ruby_271
.
gen_ruby_271 is
#!/bin/bash -v set -e set -x export PATH=/usr/local/bin:/usr/bin:/bin:/usr/x86_64-pc-linux-gnu/gcc-bin/4.9.3 cd /usr/local/src export RUBY_VERSION=2.7.1 export INSTALL_DIR=/usr/local/ruby-${RUBY_VERSION} export suffix="-${RUBY_VERSION//./}" if [ ! -f ruby-${RUBY_VERSION}.tar.bz2 ] then wget https://ftp.ruby-lang.org/pub/ruby/2.7/ruby-${RUBY_VERSION}.tar.bz2 fi sudo rm -rf ruby-${RUBY_VERSION} sudo rm -rf ${INSTALL_DIR} tar -jxf ruby-${RUBY_VERSION}.tar.bz2 cd ruby-${RUBY_VERSION} autoconf ./configure --prefix=${INSTALL_DIR} --program-suffix=${suffix} --libdir=${INSTALL_DIR}/lib --disable-install-doc 2>&1 | tee configure.log make -j12 sudo make install sudo rm -f /usr/local/bin/*${suffix} sudo ln -s ${INSTALL_DIR}/bin/*${suffix} /usr/local/bin sudo ${INSTALL_DIR}/bin/gem${suffix} install bundler # now you should be able to call bundle-271 exec ruby-271 -v in a directory containing a Gemfile
The following changes must be made.
Now the test/suite.rb runs quite nicely.
But I cannot install yus via gem-271, as my pg_config points to the obsolete version 8.4. Fixed with
sudo rm /usr/bin/pg_config sudo ln -s /usr/local/pg-10_1/bin/pg_config /usr/bin/pg_config
Now sudo gem-271 install yus
completes without errors.
On oddb-ci2 yus, migel, fiparse and currency start up with ruby 2.7.1. A lot of stuff runs fine when looking the main page. FI, PI display, login as desitin works, but no prices are displayed.
Running the spec tests I see the following problems to be fixed:
Rack::Lint::LintError at /resources/downloads/examples/doctors.csv response #<Rack::Response:0x00007f08b4f35520 @status=200, @headers={"Content-Type"=>"text/csv", "Content-Length"=>"2152"}, @writer=#<Method: Rack::Response(Rack::Response::Helpers)#append(chunk) /var/www/oddb.org/vendor/ruby/2.7.0/gems/rack-2.2.2/lib/rack/response.rb:287>, @block=nil, @body=["ean13;exam;salutation;title;firstname;name;praxis;addresstype;address_name;lines;address;plz;city;canton;fon;fax;email;language;specialities\n7601000616715;1998;Herrn;Arzt;Fabrice;Dami;false;;;;;;;;;;amig@amig.ch;französisch;\n7601000044648;1990;Herrn;Dr. med.;Bernard;Reith;true;at_praxis;Bernard Reith;Cabinet médical;28, rue de Genčve;1225;Chęne-Bourg;;022 349 86 86;022 349 53 <...>], @buffered=true, @length=2152> is not an Array , but Rack::Response
return response
to return response.finish
in sbsm/lib/app.rb (Line 120). But we will still need a new version 1.6.0 of sbsm
@400000005ed8fe77283995a4 cannot load complex into simple @400000005ed8fe772839ef7c (druby://localhost:33000) /var/www/migel/vendor/ruby/2.7.0/gems/odba-1.1.6/lib/odba/marshal.rb:15:in `marshal_load' @400000005ed8fe772839f364 (druby://localhost:33000) /var/www/migel/vendor/ruby/2.7.0/gems/odba-1.1.6/lib/odba/marshal.rb:15:in `load' @400000005ed8fe772839f364 (druby://localhost:33000) /var/www/migel/vendor/ruby/2.7.0/gems/odba-1.1.6/lib/odba/marshal.rb:15:in `load' @400000005ed8fe772839f364 (druby://localhost:33000) /var/www/migel/vendor/ruby/2.7.0/gems/odba-1.1.6/lib/odba/cache.rb:629:in `restore' @400000005ed8fe772839ff1c (druby://localhost:33000) /var/www/migel/vendor/ruby/2.7.0/gems/odba-1.1.6/lib/odba/cache.rb:319:in `block in fetch_or_restore' @400000005ed8fe772839ff1c (druby://localhost:33000) /var/www/migel/vendor/ruby/2.7.0/gems/odba-1.1.6/lib/odba/cache.rb:314:in `fetch_or_do' @400000005ed8fe77283a0304 (druby://localhost:33000) /var/www/migel/vendor/ruby/2.7.0/gems/odba-1.1.6/lib/odba/cache.rb:318:in `fetch_or_restore' @400000005ed8fe77283a39b4 (druby://localhost:33000) /var/www/migel/vendor/ruby/2.7.0/gems/odba-1.1.6/lib/odba/cache.rb:66:in `block in bulk_restore' @400000005ed8fe77283a39b4 (druby://localhost:33000) /var/www/migel/vendor/ruby/2.7.0/gems/odba-1.1.6/lib/odba/cache.rb:63:in `each' @400000005ed8fe77283a456c (druby://localhost:33000) /var/www/migel/vendor/ruby/2.7.0/gems/odba-1.1.6/lib/odba/cache.rb:63:in `bulk_restore' @400000005ed8fe77283a456c (druby://localhost:33000) /var/www/migel/vendor/ruby/2.7.0/gems/odba-1.1.6/lib/odba/cache.rb:57:in `bulk_fetch' @400000005ed8fe77283a456c (druby://localhost:33000) /var/www/migel/vendor/ruby/2.7.0/gems/odba-1.1.6/lib/odba/cache.rb:261:in `fetch_collection' @400000005ed8fe77283a4d3c (druby://localhost:33000) /var/www/migel/vendor/ruby/2.7.0/gems/odba-1.1.6/lib/odba/cache.rb:633:in `restore' @400000005ed8fe77283a5124 (druby://localhost:33000) /var/www/migel/vendor/ruby/2.7.0/gems/odba-1.1.6/lib/odba/cache.rb:319:in `block in fetch_or_restore' @400000005ed8fe77283a5124 (druby://localhost:33000) /var/www/migel/vendor/ruby/2.7.0/gems/odba-1.1.6/lib/odba/cache.rb:314:in `fetch_or_do' @400000005ed8fe77283a8004 (druby://localhost:33000) /var/www/migel/vendor/ruby/2.7.0/gems/odba-1.1.6/lib/odba/cache.rb:318:in `fetch_or_restore' @400000005ed8fe77283a8004 (druby://localhost:33000) /var/www/migel/vendor/ruby/2.7.0/gems/odba-1.1.6/lib/odba/cache.rb:305:in `block in fetch_named' @400000005ed8fe77283a83ec (druby://localhost:33000) /var/www/migel/vendor/ruby/2.7.0/gems/odba-1.1.6/lib/odba/cache.rb:314:in `fetch_or_do' @400000005ed8fe77283a8fa4 (druby://localhost:33000) /var/www/migel/vendor/ruby/2.7.0/gems/odba-1.1.6/lib/odba/cache.rb:297:in `fetch_named' @400000005ed8fe77283a8fa4 (druby://localhost:33000) /var/www/migel/lib/migel/util/server.rb:223:in `migelids' @400000005ed8fe77283a8fa4 (druby://localhost:33000) /usr/local/ruby-2.7.1/lib/ruby/2.7.0/drb/drb.rb:1690:in `perform_without_block' @400000005ed8fe77283a9774 (druby://localhost:33000) /usr/local/ruby-2.7.1/lib/ruby/2.7.0/drb/drb.rb:1646:in `perform' @400000005ed8fe77283a9b5c (druby://localhost:33000) /usr/local/ruby-2.7.1/lib/ruby/2.7.0/drb/drb.rb:1734:in `block (2 levels) in main_loop' @400000005ed8fe77283a9b5c (druby://localhost:33000) /usr/local/ruby-2.7.1/lib/ruby/2.7.0/drb/drb.rb:1730:in `loop' @400000005ed8fe77283a9b5c (druby://localhost:33000) /usr/local/ruby-2.7.1/lib/ruby/2.7.0/drb/drb.rb:1730:in `block in main_loop' @400000005ed8fe77283aa32c /var/www/oddb.org/src/util/oddbapp.rb:2039:in `migel_count' @400000005ed8fe77283aa32c /home/niklaus/git/sbsm/lib/sbsm/session.rb:139:in `method_missing' @400000005ed8fe77283aa714 /var/www/oddb.org/src/view/migel/centeredsearchform.rb:44:in `migel_count' @400000005ed8fe77283aa714 /var/www/oddb.org/vendor/ruby/2.7.0/gems/htmlgrid-1.1.5/lib/htmlgrid/composite.rb:83:in `create' @400000005ed8fe77283aaee4 /var/www/oddb.org/vendor/ruby/2.7.0/gems/htmlgrid-1.1.5/lib/htmlgrid/composite.rb:284:in `compose_component' @400000005ed8fe77283ab2cc /var/www/oddb.org/vendor/ruby/2.7.0/gems/htmlgrid-1.1.5/lib/htmlgrid/composite.rb:213:in `block in compose' @400000005ed8fe77283ab2cc /var/www/oddb.org/vendor/ruby/2.7.0/gems/htmlgrid-1.1.5/lib/htmlgrid/composite.rb:209:in `each' @400000005ed8fe77283aba9c /var/www/oddb.org/vendor/ruby/2.7.0/gems/htmlgrid-1.1.5/lib/htmlgrid/composite.rb:209:in `compose' @400000005ed8fe77283aba9c /var/www/oddb.org/vendor/ruby/2.7.0/gems/htmlgrid-1.1.5/lib/htmlgrid/composite.rb:72:in `init' @400000005ed8fe77283abe84 /var/www/oddb.org/src/view/migel/centeredsearchform.rb:41:in `init' @400000005ed8fe77283abe84 /var/www/oddb.org/vendor/ruby/2.7.0/gems/htmlgrid-1.1.5/lib/htmlgrid/component.rb:139:in `initialize' @400000005ed8fe77283ac26c /var/www/oddb.org/src/view/google_ad_sense.rb:109:in `new' @400000005ed8fe77283ac654 /var/www/oddb.org/src/view/google_ad_sense.rb:109:in `content' @400000005ed8fe77283ac654 /var/www/oddb.org/vendor/ruby/2.7.0/gems/htmlgrid-1.1.5/lib/htmlgrid/composite.rb:83:in `create' @400000005ed8fe77283ac654 /var/www/oddb.org/vendor/ruby/2.7.0/gems/htmlgrid-1.1.5/lib/htmlgrid/composite.rb:284:in `compose_component' @400000005ed8fe77283ace24 /var/www/oddb.org/vendor/ruby/2.7.0/gems/htmlgrid-1.1.5/lib/htmlgrid/composite.rb:213:in `block in compose' @400000005ed8fe77283ad5f4 /var/www/oddb.org/vendor/ruby/2.7.0/gems/htmlgrid-1.1.5/lib/htmlgrid/composite.rb:209:in `each' @400000005ed8fe77283ad9dc /var/www/oddb.org/vendor/ruby/2.7.0/gems/htmlgrid-1.1.5/lib/htmlgrid/composite.rb:209:in `compose' @400000005ed8fe77283ad9dc /var/www/oddb.org/vendor/ruby/2.7.0/gems/htmlgrid-1.1.5/lib/htmlgrid/composite.rb:72:in `init' @400000005ed8fe77283ad9dc /var/www/oddb.org/vendor/ruby/2.7.0/gems/htmlgrid-1.1.5/lib/htmlgrid/component.rb:139:in `initialize' @400000005ed8fe77283ae1ac /var/www/oddb.org/src/view/publictemplate.rb:76:in `new' @400000005ed8fe77283ae1ac /var/www/oddb.org/src/view/publictemplate.rb:76:in `content' @400000005ed8fe77283ae594 /var/www/oddb.org/vendor/ruby/2.7.0/gems/htmlgrid-1.1.5/lib/htmlgrid/composite.rb:83:in `create' @400000005ed8fe77283ae594 /var/www/oddb.org/vendor/ruby/2.7.0/gems/htmlgrid-1.1.5/lib/htmlgrid/composite.rb:284:in `compose_component' @400000005ed8fe77283af534 /var/www/oddb.org/vendor/ruby/2.7.0/gems/htmlgrid-1.1.5/lib/htmlgrid/composite.rb:213:in `block in compose' @400000005ed8fe77283af91c /var/www/oddb.org/vendor/ruby/2.7.0/gems/htmlgrid-1.1.5/lib/htmlgrid/composite.rb:209:in `each' @400000005ed8fe77283af91c /var/www/oddb.org/vendor/ruby/2.7.0/gems/htmlgrid-1.1.5/lib/htmlgrid/composite.rb:209:in `compose' @400000005ed8fe77283b00ec /var/www/oddb.org/vendor/ruby/2.7.0/gems/htmlgrid-1.1.5/lib/htmlgrid/composite.rb:72:in `init' @400000005ed8fe77283b04d4 /var/www/oddb.org/src/view/publictemplate.rb:73:in `init' @400000005ed8fe77283b04d4 /var/www/oddb.org/vendor/ruby/2.7.0/gems/htmlgrid-1.1.5/lib/htmlgrid/component.rb:139:in `initialize' @400000005ed8fe77283b04d4 /home/niklaus/git/sbsm/lib/sbsm/state.rb:241:in `new' @400000005ed8fe77283b0ca4 /home/niklaus/git/sbsm/lib/sbsm/state.rb:241:in `view' @400000005ed8fe77283b0ca4 /home/niklaus/git/sbsm/lib/sbsm/state.rb:174:in `to_html' @400000005ed8fe77283b108c /home/niklaus/git/sbsm/lib/sbsm/session.rb:548:in `to_html' @400000005ed8fe77283b108c /home/niklaus/git/sbsm/lib/sbsm/session.rb:280:in `block in process_rack' @400000005ed8fe77283b108c /home/niklaus/git/sbsm/lib/sbsm/session.rb:209:in `synchronize' @400000005ed8fe77283b185c /home/niklaus/git/sbsm/lib/sbsm/session.rb:209:in `process_rack' @400000005ed8fe77283b185c /home/niklaus/git/sbsm/lib/sbsm/app.rb:127:in `call' @400000005ed8fe77283b185c /var/www/oddb.org/vendor/ruby/2.7.0/gems/rack-2.2.2/lib/rack/lint.rb:50:in `_call' @400000005ed8fe77283b185c /var/www/oddb.org/vendor/ruby/2.7.0/gems/rack-2.2.2/lib/rack/lint.rb:38:in `call' @400000005ed8fe77283b1c44 /var/www/oddb.org/vendor/ruby/2.7.0/gems/rack-2.2.2/lib/rack/show_exceptions.rb:23:in `call' @400000005ed8fe77283b2414 /var/www/oddb.org/vendor/ruby/2.7.0/gems/rack-2.2.2/lib/rack/content_length.rb:17:in `call' @400000005ed8fe77283b2414 /var/www/oddb.org/vendor/ruby/2.7.0/gems/rack-2.2.2/lib/rack/static.rb:161:in `call' @400000005ed8fe77283b27fc /var/www/oddb.org/vendor/ruby/2.7.0/gems/rack-2.2.2/lib/rack/tempfile_reaper.rb:15:in `call' @400000005ed8fe77283b27fc /var/www/oddb.org/vendor/ruby/2.7.0/gems/rack-2.2.2/lib/rack/tempfile_reaper.rb:15:in `call' @400000005ed8fe77283b2fcc /var/www/oddb.org/vendor/ruby/2.7.0/gems/rack-2.2.2/lib/rack/tempfile_reaper.rb:15:in `call' @400000005ed8fe77283b2fcc /var/www/oddb.org/vendor/ruby/2.7.0/gems/rack-2.2.2/lib/rack/lint.rb:50:in `_call' @400000005ed8fe77283b2fcc /var/www/oddb.org/vendor/ruby/2.7.0/gems/rack-2.2.2/lib/rack/lint.rb:38:in `call' @400000005ed8fe77283b33b4 /var/www/oddb.org/vendor/ruby/2.7.0/gems/rack-2.2.2/lib/rack/show_exceptions.rb:23:in `call' @400000005ed8fe77283b379c /var/www/oddb.org/vendor/ruby/2.7.0/gems/rack-2.2.2/lib/rack/content_length.rb:17:in `call' @400000005ed8fe77283b3b84 /var/www/oddb.org/vendor/ruby/2.7.0/gems/rack-2.2.2/lib/rack/handler/webrick.rb:95:in `service' @400000005ed8fe77283b3b84 /usr/local/ruby-2.7.1/lib/ruby/2.7.0/webrick/httpserver.rb:140:in `service' @400000005ed8fe77283b473c /usr/local/ruby-2.7.1/lib/ruby/2.7.0/webrick/httpserver.rb:96:in `run' @400000005ed8fe77283b473c /usr/local/ruby-2.7.1/lib/ruby/2.7.0/webrick/server.rb:307:in `block in start_thread'
Spec tests fail with Migel, as the gem facets does not work with Ruby 2.7.1. We replace
Is my local fix correct? I get the error
Failures: 1) Migel::Util::Importer Examples update_migelid should update a Migelid instance when it is found in the database Failure/Error: if migelid.date && migelid.date.year < 1900 #<Double "migelid"> received unexpected message :date with (no args) # ./lib/migel/util/importer.rb:213:in `update_migelid' # ./spec/util/importer_spec.rb:127:in `block (2 levels) in <module:Util>'
No. They had to be fixed by adding a :date method the mock. The only failing spec test is now for search_by_name_de. Skipping it, as I do not know howto make it pass.
In oddb.orb adding new spec tests for migel and currency, which start real Drb-Services for the tests.
Running the migel_spec.rb for oddb.org works.
When running currency_spec.rb for oddb.org I get the following failure:
Failures: 1) CurrencySpec should convert correctly from CHF to EUR Failure/Error: rate = ODDB::Currency.rate('CHF', 'EUR') DRb::DRbRemoteError: 403 Forbidden (OpenURI::HTTPError) # (druby://localhost:10999) /home/niklaus/git/currency/lib/currency.rb:19:in `get_html' # (druby://localhost:10999) /home/niklaus/git/currency/lib/currency.rb:42:in `update_rate' # (druby://localhost:10999) /home/niklaus/git/currency/lib/currency.rb:28:in `rate' # ./spec/currency_spec.rb:52:in `block (2 levels) in <top (required)>'
The finance.google.com is outdated. see https://github.com/RubyMoney/google_currency#warning. Possible alternative is https://docs.openexchangerates.org/ (Needs an access token for each app). Corresponding gem lives at https://github.com/spk/money-open-exchange-rates I propose that we switch to money-open-exchange-rates and release a new ycurrency gem version. Zeno decided to remove currencies. Took a little bit longer to implment than expected.
But afterwards I still get the error when lookint at the migel
[8] pry(#<ODDB::App>)> MIGEL_SERVER.migelids.length ArgumentError: cannot load complex into simple from (druby://192.168.0.75:33000) /var/www/migel/vendor/ruby/2.7.0/gems/odba-1.1.6/lib/odba/marshal.rb:15:in `marshal_load'
Using pry to debug the problem. Running jobs/import_bsv raised the same error, but the hexdump is very small. Was able to create a in test/test_util/loggroup.rb a testcase which forces the error. Code is
def test_marshall hexdump = "0408553a09446174655b0b690069006902c0a8553a0d526174696f6e616c5b076c2b0800001a71180269029dff6900660c32323939313631" ODBA::Marshal.load(hexdump) @group.instance_eval('@logs = {Time.local(2011,2,3) => "value"}') assert_equal([2011], @group.years) end
Looking at the source code of ruby 2.7.1 I find the string cannot load complex into simple
in ext/date/date_core.c
. Therefore I think it a problem when restoring a date object.
Taking a closer look at https://ruby-doc.org/core-2.7.1/Marshal.html and what changed between ruby 2.5.0 and 2.7.1 in date_core.c. Zeno opened https://github.com/ruby/date/issues/20. I tested the changes like this, as we must install the new version of the gem into the system
cd ~/git git clone git@github.com:nobu/date.git cd ~/git/date git remote add jeremy git@github.com:jeremyevans/date.git git checkout -b marshal-load-failure-20 jeremy/marshal-load-failure-20 bin/setup rake install cd /var/www/oddb.org ruby test/test_util/loggroup.rb bundle config set system 'true' bundle install
Updated all jobs/* files to use ruby-271 instead of ruby193.
Now sudo -u apache jobs/import_bsv
works. I get 107 occurrences of 'loading complex date into simple date' in import_bsv.log.
But I have also a log instances with errors like '!!sequence,01!package,001!sl_entry!limitation_text., reason: :!!sequence,01!package,001!sl_entry!limitation_text. -> undefined Method OddbPrevalence::66949' (number at end varies).
Deleted /var/www/.bundle as it pointed to sandoz gem.
Release htmlgrid 1.1.6 with Fix to_html with umlaut and escaped strings .
Running on thinpower (as root) /usr/local/src/gen_ruby_271