Using mod_ruby compiled with Ruby 1.9 (system installation from /usr/bin/ruby). Ydim and ydim-html startup again.
Zeno would like to have only the following yaml configuration files for ydim and ydim-html in /etc/ydim
First saving all files under /etc/ydim and /var/www/ydim.ywesee.com/etc.
Created files /service/ydim-html/log/run and /service/ydim/log/run to catch the logs. Content is
#!/bin/sh exec multilog t ./main
Log get only created after a /etc/init.d/svscan stop && /etc/init.d/svscan start
.
Now after the login I still have a misconfigured apache as I get in /var/www/ydim.ywesee.com/log/error_log
[Tue May 10 08:43:40 2016] [error] mod_ruby: error in ruby [Tue May 10 08:43:40 2016] [error] mod_ruby: /usr/lib64/ruby/site_ruby/1.9.1/rubygems/core_ext/kernel_require.rb:118:in `require': cannot load such file -- sbsm/request (LoadError) [Tue May 10 08:43:40 2016] [error] mod_ruby: from /usr/lib64/ruby/site_ruby/1.9.1/rubygems/core_ext/kernel_require.rb:118:in `rescue in require' [Tue May 10 08:43:40 2016] [error] mod_ruby: from /usr/lib64/ruby/site_ruby/1.9.1/rubygems/core_ext/kernel_require.rb:124:in `require' [Tue May 10 08:43:40 2016] [error] mod_ruby: from /var/www/ydim.ywesee.com/doc/index.rbx:4:in `<top (required)>' [Tue May 10 08:43:40 2016] [error] mod_ruby: from /usr/lib64/ruby/1.9.1/apache/ruby-run.rb:53:in `load' [Tue May 10 08:43:40 2016] [error] mod_ruby: from /usr/lib64/ruby/1.9.1/apache/ruby-run.rb:53:in `handler'
Trying to rename dbd-pg -> ydbd-pg. Verifying that loading the files work after a rake ydbd-pg:gem ydbi:gem
and gem install pkg/y*.gem using irb
irb(main):001:0> require 'pg' => true irb(main):002:0> require 'dbi' => true irb(main):003:0> require 'dbd/Pg' => true
Replacing ruby-dbi-users@rubyforge.org by zdavatz@ywesee.com. Pushing commits
Create the gem like this.
bundle install rm -rf pkg; bundle exec rake ydbd-pg:gem ydbi:gem rdoc ls pkg/*gem pkg/ydbd-pg-0.5.1.gem pkg/ydbi-0.5.1.gem
Pushed some commits
But the travis-CI builds for htmlgrid, ydim and ydim-html are now red. Thats not good!
Looks like we did not get all dependencies right. There looking why gem install ydim-html --version=1.0.1 still gets a gem dbi. First calling gem231 uninstall --all --ignore-dependencies --executables
to get rid of all gems
Testing in this order to look where the dbi-gem comes from
sudo gem231 install odba <..> no dbi. fine sudo gem231 install sbsm <..> no dbi. fine sudo gem231 install htmlgrid <..> no dbi. fine sudo gem231 install ypdf-writer <..> no dbi. fine sudo gem231 install ydim ERROR: Could not find a valid gem 'dbi' (= 0.4.6) in any repository ERROR: Possible alternatives: dbi
Okay. This comes, because we built and pushed ydim before odba 1.1.2 was released and I forgot to add this dependency to ydim.gemspec. Or we had forgotton to run rake clean before the rake gem
If I build ydim locally using bundle install && bundle exec rake gem
I am able to install it like this
sudo gem231 install pkg/ydim-1.0.1.gem Fetching: ydbi-0.5.1.gem (100%) Successfully installed ydbi-0.5.1 Successfully installed ydim-1.0.1 2 gems installed
Therefore I think the easiest is simple to bump the version 1.0.2 and ask Zeno to build the gem and push it again. Pushed commit Bumped version to 1.0.2, because we still had an unwanted dependency to dbi=0.46
Now trying to change the /service/ydim to use ydimd from the installed ydim gem 1.0.2 First testing on the shell with
sudo -u apache /usr/local/bin/ydimd /usr/local/lib/ruby/gems/2.3.0/gems/needle-1.3.0/lib/needle/definition-context.rb:36: warning: undefining `initialize' may cause serious problems /usr/local/lib/ruby/gems/2.3.0/gems/needle-1.3.0/lib/needle/definition-context.rb:36: warning: undefining `object_id' may cause serious problems /usr/local/lib/ruby/gems/2.3.0/gems/needle-1.3.0/lib/needle/definition-context.rb:36: warning: undefining `__send__' may cause serious problems /usr/local/lib/ruby/gems/2.3.0/gems/ydbi-0.5.1/lib/dbi.rb:317:in `rescue in load_driver': Could not load driver (uninitialized constant DBI::VERSION) (DBI::InterfaceError) from /usr/local/lib/ruby/gems/2.3.0/gems/ydbi-0.5.1/lib/dbi.rb:241:in `load_driver' from /usr/local/lib/ruby/gems/2.3.0/gems/ydbi-0.5.1/lib/dbi.rb:159:in `_get_full_driver' from /usr/local/lib/ruby/gems/2.3.0/gems/ydbi-0.5.1/lib/dbi.rb:144:in `connect' from /usr/local/lib/ruby/gems/2.3.0/gems/odba-1.1.2/lib/odba/connection_pool.rb:63:in `block in _connect' from /usr/local/lib/ruby/gems/2.3.0/gems/odba-1.1.2/lib/odba/connection_pool.rb:62:in `times' from /usr/local/lib/ruby/gems/2.3.0/gems/odba-1.1.2/lib/odba/connection_pool.rb:62:in `_connect' from /usr/local/lib/ruby/gems/2.3.0/gems/odba-1.1.2/lib/odba/connection_pool.rb:59:in `block in connect' from /usr/local/lib/ruby/gems/2.3.0/gems/odba-1.1.2/lib/odba/connection_pool.rb:59:in `synchronize' from /usr/local/lib/ruby/gems/2.3.0/gems/odba-1.1.2/lib/odba/connection_pool.rb:59:in `connect' from /usr/local/lib/ruby/gems/2.3.0/gems/odba-1.1.2/lib/odba/connection_pool.rb:22:in `initialize' from /usr/local/lib/ruby/gems/2.3.0/gems/ydim-1.0.2/bin/ydimd:20:in `new' from /usr/local/lib/ruby/gems/2.3.0/gems/ydim-1.0.2/bin/ydimd:20:in `<top (required)>' from /usr/local/bin/ydimd:23:in `load' from /usr/local/bin/ydimd:23:in `<main>' niklaus@oddb-ci2 /t/b/pdf-writer> ls -l /usr/local/bin/ydimd -rwxr-xr-x 1 root root 493 10. Mai 16:13 /usr/local/bin/ydimd*
Trying to patch the /usr/local/bin/ydimd. This file is very different than my local checkout and contains This file was generated by RubyGems.
. Trying to use uptodate git checkout gives
3.0/gems/needle-1.3.0/lib/needle/definition-context.rb:36: warning: undefining `initialize' may cause serious problems /usr/local/lib/ruby/gems/2.3.0/gems/needle-1.3.0/lib/needle/definition-context.rb:36: warning: undefining `object_id' may cause serious problems /usr/local/lib/ruby/gems/2.3.0/gems/needle-1.3.0/lib/needle/definition-context.rb:36: warning: undefining `__send__' may cause serious problems /usr/local/lib/ruby/gems/2.3.0/gems/ydbi-0.5.1/lib/dbi.rb:317:in `rescue in load_driver': Could not load driver (uninitialized constant DBI::VERSION) (DBI::InterfaceError) from /usr/local/lib/ruby/gems/2.3.0/gems/ydbi-0.5.1/lib/dbi.rb:241:in `load_driver' from /usr/local/lib/ruby/gems/2.3.0/gems/ydbi-0.5.1/lib/dbi.rb:159:in `_get_full_driver' from /usr/local/lib/ruby/gems/2.3.0/gems/ydbi-0.5.1/lib/dbi.rb:144:in `connect' from /usr/local/lib/ruby/gems/2.3.0/gems/odba-1.1.2/lib/odba/connection_pool.rb:63:in `block in _connect' from /usr/local/lib/ruby/gems/2.3.0/gems/odba-1.1.2/lib/odba/connection_pool.rb:62:in `times' from /usr/local/lib/ruby/gems/2.3.0/gems/odba-1.1.2/lib/odba/connection_pool.rb:62:in `_connect' from /usr/local/lib/ruby/gems/2.3.0/gems/odba-1.1.2/lib/odba/connection_pool.rb:59:in `block in connect' from /usr/local/lib/ruby/gems/2.3.0/gems/odba-1.1.2/lib/odba/connection_pool.rb:59:in `synchronize' from /usr/local/lib/ruby/gems/2.3.0/gems/odba-1.1.2/lib/odba/connection_pool.rb:59:in `connect' from /usr/local/lib/ruby/gems/2.3.0/gems/odba-1.1.2/lib/odba/connection_pool.rb:22:in `initialize' from /home/niklaus/git/ydim/bin/ydimd:20:in `new' from /home/niklaus/git/ydim/bin/ydimd:20:in `<main>'
Adding
require 'pg' require 'dbi' require 'dbi/version' require 'dbd/Pg'
gives
sudo -u apache /home/niklaus/git/ydim/bin/ydimd /usr/local/lib/ruby/gems/2.3.0/gems/needle-1.3.0/lib/needle/definition-context.rb:36: warning: undefining `initialize' may cause serious problems /usr/local/lib/ruby/gems/2.3.0/gems/needle-1.3.0/lib/needle/definition-context.rb:36: warning: undefining `object_id' may cause serious problems /usr/local/lib/ruby/gems/2.3.0/gems/needle-1.3.0/lib/needle/definition-context.rb:36: warning: undefining `__send__' may cause serious problems /usr/local/lib/ruby/gems/2.3.0/gems/ydbi-0.5.1/lib/dbi/base_classes/driver.rb:16:in `initialize': Wrong DBD API version used (DBI::InterfaceError) from /usr/local/lib/ruby/gems/2.3.0/gems/ydbd-pg-0.5.1/lib/dbd/Pg.rb:147:in `initialize' from /usr/local/lib/ruby/gems/2.3.0/gems/ydbi-0.5.1/lib/dbi.rb:302:in `new' from /usr/local/lib/ruby/gems/2.3.0/gems/ydbi-0.5.1/lib/dbi.rb:302:in `block in load_driver' from /usr/local/lib/ruby/2.3.0/monitor.rb:214:in `mon_synchronize' from /usr/local/lib/ruby/gems/2.3.0/gems/ydbi-0.5.1/lib/dbi.rb:241:in `load_driver' from /usr/local/lib/ruby/gems/2.3.0/gems/ydbi-0.5.1/lib/dbi.rb:159:in `_get_full_driver' from /usr/local/lib/ruby/gems/2.3.0/gems/ydbi-0.5.1/lib/dbi.rb:144:in `connect' from /usr/local/lib/ruby/gems/2.3.0/gems/odba-1.1.2/lib/odba/connection_pool.rb:63:in `block in _connect' from /usr/local/lib/ruby/gems/2.3.0/gems/odba-1.1.2/lib/odba/connection_pool.rb:62:in `times' from /usr/local/lib/ruby/gems/2.3.0/gems/odba-1.1.2/lib/odba/connection_pool.rb:62:in `_connect' from /usr/local/lib/ruby/gems/2.3.0/gems/odba-1.1.2/lib/odba/connection_pool.rb:59:in `block in connect' from /usr/local/lib/ruby/gems/2.3.0/gems/odba-1.1.2/lib/odba/connection_pool.rb:59:in `synchronize' from /usr/local/lib/ruby/gems/2.3.0/gems/odba-1.1.2/lib/odba/connection_pool.rb:59:in `connect' from /usr/local/lib/ruby/gems/2.3.0/gems/odba-1.1.2/lib/odba/connection_pool.rb:22:in `initialize' from /home/niklaus/git/ydim/bin/ydimd:24:in `new' from /home/niklaus/git/ydim/bin/ydimd:24:in `<main>'
When using raise InterfaceError, "Wrong DBD API version used #{major} #{minor} != dbi #{dbi_major} #{dbi_minor}"
in /usr/local/lib/ruby/gems/2.3.0/gems/ydbi-0.5.1/lib/dbi/base_classes/driver.rb
Now the error tells me /usr/local/lib/ruby/gems/2.3.0/gems/ydbi-0.5.1/lib/dbi/base_classes/driver.rb:16:in `initialize': Wrong DBD API version used 0 4 != dbi 0 5 (DBI::InterfaceError)
. Fixing that with commit Bumped version to 0.5.2 to avoid API clash
Fixed problem in ydim with commit
Launching sudo -u apache /usr/local/bin/ydim-htmld gives the following error
/usr/local/lib/ruby/gems/2.3.0/gems/needle-1.3.0/lib/needle/definition-context.rb:36: warning: undefining `initialize' may cause serious problems /usr/local/lib/ruby/gems/2.3.0/gems/needle-1.3.0/lib/needle/definition-context.rb:36: warning: undefining `object_id' may cause serious problems /usr/local/lib/ruby/gems/2.3.0/gems/needle-1.3.0/lib/needle/definition-context.rb:36: warning: undefining `__send__' may cause serious problems could not find htmlgrid.so, falling back to pure-ruby class /usr/local/lib/ruby/gems/2.3.0/gems/ydim-html-1.0.1/lib/ydim/html/view/htmlgrid.rb:16: warning: already initialized constant HtmlGrid::Component::HTTP_HEADERS /usr/local/lib/ruby/gems/2.3.0/gems/htmlgrid-1.0.8/lib/htmlgrid/component.rb:38: warning: previous definition of HTTP_HEADERS was here /usr/local/lib/ruby/gems/2.3.0/gems/ydim-html-1.0.1/lib/ydim/html/view/htmlgrid.rb:81: warning: already initialized constant HtmlGrid::List::STRIPED_BG /usr/local/lib/ruby/gems/2.3.0/gems/htmlgrid-1.0.8/lib/htmlgrid/list.rb:46: warning: previous definition of STRIPED_BG was here /usr/local/lib/ruby/gems/2.3.0/gems/ydim-html-1.0.1/bin/ydim-htmld:17:in `read': No such file or directory @ rb_sysopen - /usr/local/lib/ruby/gems/2.3.0/gems/ydim-html-1.0.1/.git/HEAD (Errno::ENOENT) from /usr/local/lib/ruby/gems/2.3.0/gems/ydim-html-1.0.1/bin/ydim-htmld:17:in `<module:Html>' from /usr/local/lib/ruby/gems/2.3.0/gems/ydim-html-1.0.1/bin/ydim-htmld:15:in `<module:YDIM>' from /usr/local/lib/ruby/gems/2.3.0/gems/ydim-html-1.0.1/bin/ydim-htmld:14:in `<top (required)>' from /usr/local/bin/ydim-htmld:23:in `load' from /usr/local/bin/ydim-htmld:23:in `<main>'
Fixed this error. Getting the next one:
sudo -u apache /usr/local/bin/ydim-htmld /usr/local/lib/ruby/gems/2.3.0/gems/needle-1.3.0/lib/needle/definition-context.rb:36: warning: undefining `initialize' may cause serious problems /usr/local/lib/ruby/gems/2.3.0/gems/needle-1.3.0/lib/needle/definition-context.rb:36: warning: undefining `object_id' may cause serious problems /usr/local/lib/ruby/gems/2.3.0/gems/needle-1.3.0/lib/needle/definition-context.rb:36: warning: undefining `__send__' may cause serious problems could not find htmlgrid.so, falling back to pure-ruby class /usr/local/lib/ruby/gems/2.3.0/gems/ydim-html-1.0.1/lib/ydim/html/view/htmlgrid.rb:16: warning: already initialized constant HtmlGrid::Component::HTTP_HEADERS /usr/local/lib/ruby/gems/2.3.0/gems/htmlgrid-1.0.8/lib/htmlgrid/component.rb:38: warning: previous definition of HTTP_HEADERS was here /usr/local/lib/ruby/gems/2.3.0/gems/ydim-html-1.0.1/lib/ydim/html/view/htmlgrid.rb:81: warning: already initialized constant HtmlGrid::List::STRIPED_BG /usr/local/lib/ruby/gems/2.3.0/gems/htmlgrid-1.0.8/lib/htmlgrid/list.rb:46: warning: previous definition of STRIPED_BG was here (druby://localhost:12376) /usr/local/lib/ruby/2.3.0/drb/drb.rb:373:in `_id2ref': 0x003f992c22c874 is not id value (RangeError) from (druby://localhost:12376) /usr/local/lib/ruby/2.3.0/drb/drb.rb:373:in `to_obj' from (druby://localhost:12376) /usr/local/lib/ruby/2.3.0/drb/drb.rb:1483:in `to_obj' from (druby://localhost:12376) /usr/local/lib/ruby/2.3.0/drb/drb.rb:1779:in `to_obj' from (druby://localhost:12376) /usr/local/lib/ruby/2.3.0/drb/drb.rb:622:in `recv_request' from (druby://localhost:12376) /usr/local/lib/ruby/2.3.0/drb/drb.rb:931:in `recv_request' from (druby://localhost:12376) /usr/local/lib/ruby/2.3.0/drb/drb.rb:1599:in `init_with_client' from (druby://localhost:12376) /usr/local/lib/ruby/2.3.0/drb/drb.rb:1611:in `setup_message' from (druby://localhost:12376) /usr/local/lib/ruby/2.3.0/drb/drb.rb:1563:in `perform' from (druby://localhost:12376) /usr/local/lib/ruby/2.3.0/drb/drb.rb:1657:in `block (2 levels) in main_loop' from (druby://localhost:12376) /usr/local/lib/ruby/2.3.0/drb/drb.rb:1653:in `loop' from (druby://localhost:12376) /usr/local/lib/ruby/2.3.0/drb/drb.rb:1653:in `block in main_loop' from (druby://localhost:12375) /usr/local/lib/ruby/2.3.0/drb/invokemethod.rb:11:in `block_yield' from (druby://localhost:12375) /usr/local/lib/ruby/2.3.0/drb/invokemethod.rb:18:in `block in perform_with_block' from (druby://localhost:12375) /usr/local/lib/ruby/gems/2.3.0/gems/rrba-1.0.0/lib/rrba/server.rb:24:in `authenticate' from (druby://localhost:12375) /usr/local/lib/ruby/gems/2.3.0/gems/ydim-1.0.3/lib/ydim/server.rb:127:in `login' from (druby://localhost:12375) /usr/local/lib/ruby/2.3.0/drb/invokemethod.rb:15:in `perform_with_block' from (druby://localhost:12375) /usr/local/lib/ruby/2.3.0/drb/drb.rb:1582:in `perform' from (druby://localhost:12375) /usr/local/lib/ruby/2.3.0/drb/drb.rb:1657:in `block (2 levels) in main_loop' from (druby://localhost:12375) /usr/local/lib/ruby/2.3.0/drb/drb.rb:1653:in `loop' from (druby://localhost:12375) /usr/local/lib/ruby/2.3.0/drb/drb.rb:1653:in `block in main_loop' from /usr/local/lib/ruby/gems/2.3.0/gems/ydim-1.0.3/lib/ydim/client.rb:16:in `login' from /usr/local/lib/ruby/gems/2.3.0/gems/ydim-html-1.0.1/lib/ydim/html/util/server.rb:27:in `method_missing' from /usr/local/lib/ruby/gems/2.3.0/gems/sbsm-1.2.7/lib/sbsm/drbserver.rb:137:in `block in run_cleaner'
Okay. Looks like a problem deep inside odba/persistence
On thinpower I was able to get rid of the /usr/local/lib/ruby/site_ruby/1.9.1/rubygems/basic_specification.rb:62:in `file?': Insecure operation - file? (SecurityError)
by changing the line in doc/index.rbx from load 'etc/config.rb'
to require File.join('/var/www/ydim.ywesee.com/etc/config.rb').untaint
Now I the next problem requiring rclconf. The ydim.ywesee.com/log/error_log reports
[Tue May 10 17:55:49 2016] [error] mod_ruby: error in ruby [Tue May 10 17:55:49 2016] [error] mod_ruby: /usr/local/lib/ruby/site_ruby/1.9.1/rubygems/core_ext/kernel_require.rb:135:in `require': cannot load such file -- rclconf (LoadError) [Tue May 10 17:55:49 2016] [error] mod_ruby: from /usr/local/lib/ruby/site_ruby/1.9.1/rubygems/core_ext/kernel_require.rb:135:in `rescue in require' [Tue May 10 17:55:49 2016] [error] mod_ruby: from /usr/local/lib/ruby/site_ruby/1.9.1/rubygems/core_ext/kernel_require.rb:144:in `require' [Tue May 10 17:55:49 2016] [error] mod_ruby: from /var/www/ydim.ywesee.com/etc/config.rb:4:in `<top (required)>' [Tue May 10 17:55:49 2016] [error] mod_ruby: from /usr/local/lib/ruby/site_ruby/1.9.1/rubygems/core_ext/kernel_require.rb:55:in `require' [Tue May 10 17:55:49 2016] [error] mod_ruby: from /usr/local/lib/ruby/site_ruby/1.9.1/rubygems/core_ext/kernel_require.rb:55:in `require' [Tue May 10 17:55:49 2016] [error] mod_ruby: from /var/www/ydim.ywesee.com/doc/index.rbx:9:in `<top (required)>' [Tue May 10 17:55:49 2016] [error] mod_ruby: from /usr/local/lib/ruby/1.9.1/apache/ruby-run.rb:53:in `load' [Tue May 10 17:55:49 2016] [error] mod_ruby: from /usr/local/lib/ruby/1.9.1/apache/ruby-run.rb:53:in `handler'
Trying whether adding a logical link helps ln -s /usr/local/lib64/ruby/gems/1.9.1/gems/rclconf-1.0.0/lib/rclconf.rb /usr/local/lib/ruby/site_ruby/1.9.1/x86_64-linux
Works partially. Now getting (after a restart of apache)
[Tue May 10 18:08:51 2016] [error] mod_ruby: error in ruby [Tue May 10 18:08:51 2016] [error] mod_ruby: /var/www/ydim.ywesee.com/doc/index.rbx:11:in `<top (required)>': uninitialized constant #<Module:0x000000029103a0>::DRb (NameError) [Tue May 10 18:08:51 2016] [error] mod_ruby: from /usr/local/lib/ruby/1.9.1/apache/ruby-run.rb:53:in `load' [Tue May 10 18:08:51 2016] [error] mod_ruby: from /usr/local/lib/ruby/1.9.1/apache/ruby-run.rb:53:in `handler'