From 936ba2be0a8a474d7eec600f634f25103773bc1f Mon Sep 17 00:00:00 2001 From: Brian Ball Date: Wed, 4 Jan 2023 13:36:58 -0500 Subject: [PATCH 1/4] Update oss.rb + oscli_bundle to cmd --- server/app/lib/utility/oss.rb | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/server/app/lib/utility/oss.rb b/server/app/lib/utility/oss.rb index 9b809c371..0c8e92f92 100644 --- a/server/app/lib/utility/oss.rb +++ b/server/app/lib/utility/oss.rb @@ -21,9 +21,11 @@ def self.oscli_cmd(logger = Rails.logger) raise 'OPENSTUDIO_EXE_PATH not set' unless ENV['OPENSTUDIO_EXE_PATH'] raise "Unable to find file specified in OPENSTUDIO_EXE_PATH: `#{ENV['OPENSTUDIO_EXE_PATH']}`" unless File.exist?(ENV['OPENSTUDIO_EXE_PATH']) - + logger.info "Found ENV['OPENSTUDIO_EXE_PATH']" # set cmd from ENV variable - cmd = ENV['OPENSTUDIO_EXE_PATH'] + cmd = ENV['OPENSTUDIO_EXE_PATH'] + oscli_bundle + logger.info "Returning Oscli cmd: #{cmd}" + cmd rescue Exception => e logger.warn "Error finding Oscli: #{e}" cmd = Gem.win_platform? || ENV['OS'] == 'Windows_NT' ? 'openstudio.exe' : `which openstudio`.strip @@ -32,7 +34,7 @@ def self.oscli_cmd(logger = Rails.logger) else logger.error 'Unable to find Oscli.' end - logger.info "Returning Oscli cmd: #{cmd + oscli_bundle}" + logger.info "RESCUE: Returning Oscli cmd: #{cmd + oscli_bundle}" cmd + oscli_bundle end From 0fd575796f62736d38aa9f2d7c3c9fbdb5ea0be0 Mon Sep 17 00:00:00 2001 From: Tim Coleman Date: Tue, 3 Jan 2023 16:03:06 -0700 Subject: [PATCH 2/4] use gem mail 2.7.1 as versions >= 2.8.0 causes start up failures with rails 6.1.X --- server/Gemfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/server/Gemfile b/server/Gemfile index 8fd06da70..5ce3074c9 100644 --- a/server/Gemfile +++ b/server/Gemfile @@ -19,7 +19,6 @@ gem 'rubyzip', '~> 2.3.0' gem 'tzinfo-data', '~>1.2021.1' # database modules - gem 'mongoid', '7.2.1' #gem 'mongoid-paperclip' # forked gem is neccessary as mongoid-paperclip relies on mimemagic which now requires freedesktop.org.xml at run time" @@ -58,7 +57,8 @@ gem 'sass', '~> 3.7.4' gem 'sass-rails', '~> 6.0.0' gem 'sprockets-rails', '~> 3.2.2' gem 'uglifier', '~> 4.2.0' - +# mail => 2.8.0 has startup failures with rails 6.1.x series +gem 'mail', '= 2.7.1' # don't try to install sassc 2. gem 'roo', '~> 2.8.3' gem 'sassc', '~> 2.4.0' From 931d5ca51fa77102bb80c409c3c51e4139726054 Mon Sep 17 00:00:00 2001 From: brianlball Date: Wed, 4 Jan 2023 17:18:29 -0500 Subject: [PATCH 3/4] remove --bundle from OSCLI_CMD return for admin page --- server/app/controllers/admin_controller.rb | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/server/app/controllers/admin_controller.rb b/server/app/controllers/admin_controller.rb index 1aef593c6..b47e4540e 100644 --- a/server/app/controllers/admin_controller.rb +++ b/server/app/controllers/admin_controller.rb @@ -37,11 +37,12 @@ class AdminController < ApplicationController def index require 'rubygems' @gems = Gem::Specification.all.map { |g| [g.name, g.version.to_s] }.sort - Rails.logger.debug "oscli version command: #{Utility::Oss.oscli_cmd} openstudio_version" + #use split.first to remove the --bundle stuff, see why below + Rails.logger.debug "oscli version command: #{Utility::Oss.oscli_cmd(Rails.logger).split.first} openstudio_version" # syntax to explicitly unset a bunch of env vars is very different for windows # Use the default shell to query for OpenStudio version. Not neccessary to unset these. #unset_vars = Gem.win_platform? || ENV['OS'] == 'Windows_NT' ? 'set ' + Utility::Oss::ENV_VARS_TO_UNSET_FOR_OSCLI.join('= && set ') : 'unset ' + Utility::Oss::ENV_VARS_TO_UNSET_FOR_OSCLI.join(' && unset ') - oscli_cmd = "#{Utility::Oss.oscli_cmd} openstudio_version" + oscli_cmd = "#{Utility::Oss.oscli_cmd(Rails.logger).split.first} openstudio_version" oscli_cmd = "call #{oscli_cmd}" if Gem.win_platform? || ENV['OS'] == 'Windows_NT' Rails.logger.debug "oscli_cmd: #{oscli_cmd}" version = `#{oscli_cmd}` #this will not work with --bundle args since user is 'nobody' and cannot create a tmpdir from $HOME From 7092b04593ee24548ab571a52268e58a675d9d56 Mon Sep 17 00:00:00 2001 From: brianlball Date: Wed, 4 Jan 2023 21:50:54 -0500 Subject: [PATCH 4/4] cli.cmd_no_bundle --- server/app/controllers/admin_controller.rb | 4 ++-- server/app/lib/utility/oss.rb | 12 ++++++++++++ 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/server/app/controllers/admin_controller.rb b/server/app/controllers/admin_controller.rb index b47e4540e..0d42cc258 100644 --- a/server/app/controllers/admin_controller.rb +++ b/server/app/controllers/admin_controller.rb @@ -38,11 +38,11 @@ def index require 'rubygems' @gems = Gem::Specification.all.map { |g| [g.name, g.version.to_s] }.sort #use split.first to remove the --bundle stuff, see why below - Rails.logger.debug "oscli version command: #{Utility::Oss.oscli_cmd(Rails.logger).split.first} openstudio_version" + Rails.logger.debug "oscli version command: #{Utility::Oss.oscli_cmd_no_bundle_args(Rails.logger)} openstudio_version" # syntax to explicitly unset a bunch of env vars is very different for windows # Use the default shell to query for OpenStudio version. Not neccessary to unset these. #unset_vars = Gem.win_platform? || ENV['OS'] == 'Windows_NT' ? 'set ' + Utility::Oss::ENV_VARS_TO_UNSET_FOR_OSCLI.join('= && set ') : 'unset ' + Utility::Oss::ENV_VARS_TO_UNSET_FOR_OSCLI.join(' && unset ') - oscli_cmd = "#{Utility::Oss.oscli_cmd(Rails.logger).split.first} openstudio_version" + oscli_cmd = "#{Utility::Oss.oscli_cmd_no_bundle_args(Rails.logger)} openstudio_version" oscli_cmd = "call #{oscli_cmd}" if Gem.win_platform? || ENV['OS'] == 'Windows_NT' Rails.logger.debug "oscli_cmd: #{oscli_cmd}" version = `#{oscli_cmd}` #this will not work with --bundle args since user is 'nobody' and cannot create a tmpdir from $HOME diff --git a/server/app/lib/utility/oss.rb b/server/app/lib/utility/oss.rb index 0c8e92f92..a96c5b769 100644 --- a/server/app/lib/utility/oss.rb +++ b/server/app/lib/utility/oss.rb @@ -37,6 +37,18 @@ def self.oscli_cmd(logger = Rails.logger) logger.info "RESCUE: Returning Oscli cmd: #{cmd + oscli_bundle}" cmd + oscli_bundle end + + def self.oscli_cmd_no_bundle_args(logger = Rails.logger) + # determine if an explicit oscli path has been set via the meta-cli option, warn if not + + raise 'OPENSTUDIO_EXE_PATH not set' unless ENV['OPENSTUDIO_EXE_PATH'] + raise "Unable to find file specified in OPENSTUDIO_EXE_PATH: `#{ENV['OPENSTUDIO_EXE_PATH']}`" unless File.exist?(ENV['OPENSTUDIO_EXE_PATH']) + logger.info "Found ENV['OPENSTUDIO_EXE_PATH'] in oscli_cmd_no_bundle_args" + # set cmd from ENV variable + cmd = ENV['OPENSTUDIO_EXE_PATH'] + logger.info "Returning Oscli cmd: #{cmd}" + cmd + end # use bundle option only if we have a path to openstudio gemfile. # if BUNDLE_PATH is not set (ie Docker), we must add these options