Search code examples
ruby-on-railsrubyactiverecordclockwork

How to initialize rails 5.1 environment from ruby script for clockwork


I need to initialise rails from an arbitrary script so that I can access some ActiveRecord objects using Clockwork

UPDATE: The issue only occurs when require 'clockwork' and require_relative './config/environment' are both required.

They recommend initializing it like this:

# rails-root-directory/my-file.rb
require 'clockwork'
require_relative './config/boot'
require_relative './config/environment'

Sadly require_relative './config/environment' seems to be including openssl twice or something, resulting in a whole bunch of warnings and finally an error (below)

I'm running rails 5.1, ruby 4.2.1 using rbenv on MacOS High Sierra.

Not sure if this is the right way to initialize rails (googling seems to say it is) or if it's just an issue with my setup. Please help!

/Users/james/.rbenv/versions/2.4.1/lib/ruby/2.4.0/openssl/cipher.rb:18: warning: constant OpenSSL::Cipher::Cipher is deprecated
/Users/james/.rbenv/versions/2.4.1/lib/ruby/2.4.0/openssl/cipher.rb:24: warning: already initialized constant OpenSSL::Cipher::AES
/Users/james/.rbenv/versions/2.4.1/lib/ruby/gems/2.4.0/gems/openssl-2.0.5/lib/openssl/cipher.rb:24: warning: previous definition of AES was here
/Users/james/.rbenv/versions/2.4.1/lib/ruby/2.4.0/openssl/cipher.rb:18: warning: constant OpenSSL::Cipher::Cipher is deprecated
/Users/james/.rbenv/versions/2.4.1/lib/ruby/2.4.0/openssl/cipher.rb:24: warning: already initialized constant OpenSSL::Cipher::CAST5
/Users/james/.rbenv/versions/2.4.1/lib/ruby/gems/2.4.0/gems/openssl-2.0.5/lib/openssl/cipher.rb:24: warning: previous definition of CAST5 was here
/Users/james/.rbenv/versions/2.4.1/lib/ruby/2.4.0/openssl/cipher.rb:18: warning: constant OpenSSL::Cipher::Cipher is deprecated
/Users/james/.rbenv/versions/2.4.1/lib/ruby/2.4.0/openssl/cipher.rb:24: warning: already initialized constant OpenSSL::Cipher::BF
/Users/james/.rbenv/versions/2.4.1/lib/ruby/gems/2.4.0/gems/openssl-2.0.5/lib/openssl/cipher.rb:24: warning: previous definition of BF was here
/Users/james/.rbenv/versions/2.4.1/lib/ruby/2.4.0/openssl/cipher.rb:18: warning: constant OpenSSL::Cipher::Cipher is deprecated
/Users/james/.rbenv/versions/2.4.1/lib/ruby/2.4.0/openssl/cipher.rb:24: warning: already initialized constant OpenSSL::Cipher::DES
/Users/james/.rbenv/versions/2.4.1/lib/ruby/gems/2.4.0/gems/openssl-2.0.5/lib/openssl/cipher.rb:24: warning: previous definition of DES was here
/Users/james/.rbenv/versions/2.4.1/lib/ruby/2.4.0/openssl/cipher.rb:18: warning: constant OpenSSL::Cipher::Cipher is deprecated
/Users/james/.rbenv/versions/2.4.1/lib/ruby/2.4.0/openssl/cipher.rb:24: warning: already initialized constant OpenSSL::Cipher::IDEA
/Users/james/.rbenv/versions/2.4.1/lib/ruby/gems/2.4.0/gems/openssl-2.0.5/lib/openssl/cipher.rb:24: warning: previous definition of IDEA was here
/Users/james/.rbenv/versions/2.4.1/lib/ruby/2.4.0/openssl/cipher.rb:18: warning: constant OpenSSL::Cipher::Cipher is deprecated
/Users/james/.rbenv/versions/2.4.1/lib/ruby/2.4.0/openssl/cipher.rb:24: warning: already initialized constant OpenSSL::Cipher::RC2
/Users/james/.rbenv/versions/2.4.1/lib/ruby/gems/2.4.0/gems/openssl-2.0.5/lib/openssl/cipher.rb:24: warning: previous definition of RC2 was here
/Users/james/.rbenv/versions/2.4.1/lib/ruby/2.4.0/openssl/cipher.rb:18: warning: constant OpenSSL::Cipher::Cipher is deprecated
/Users/james/.rbenv/versions/2.4.1/lib/ruby/2.4.0/openssl/cipher.rb:24: warning: already initialized constant OpenSSL::Cipher::RC4
/Users/james/.rbenv/versions/2.4.1/lib/ruby/gems/2.4.0/gems/openssl-2.0.5/lib/openssl/cipher.rb:24: warning: previous definition of RC4 was here
/Users/james/.rbenv/versions/2.4.1/lib/ruby/2.4.0/openssl/cipher.rb:18: warning: constant OpenSSL::Cipher::Cipher is deprecated
/Users/james/.rbenv/versions/2.4.1/lib/ruby/2.4.0/openssl/cipher.rb:24: warning: already initialized constant OpenSSL::Cipher::RC5
/Users/james/.rbenv/versions/2.4.1/lib/ruby/gems/2.4.0/gems/openssl-2.0.5/lib/openssl/cipher.rb:24: warning: previous definition of RC5 was here
/Users/james/.rbenv/versions/2.4.1/lib/ruby/2.4.0/openssl/cipher.rb:28: warning: constant OpenSSL::Cipher::Cipher is deprecated
/Users/james/.rbenv/versions/2.4.1/lib/ruby/2.4.0/openssl/cipher.rb:33: warning: already initialized constant OpenSSL::Cipher::AES128
/Users/james/.rbenv/versions/2.4.1/lib/ruby/gems/2.4.0/gems/openssl-2.0.5/lib/openssl/cipher.rb:33: warning: previous definition of AES128 was here
/Users/james/.rbenv/versions/2.4.1/lib/ruby/2.4.0/openssl/cipher.rb:28: warning: constant OpenSSL::Cipher::Cipher is deprecated
/Users/james/.rbenv/versions/2.4.1/lib/ruby/2.4.0/openssl/cipher.rb:33: warning: already initialized constant OpenSSL::Cipher::AES192
/Users/james/.rbenv/versions/2.4.1/lib/ruby/gems/2.4.0/gems/openssl-2.0.5/lib/openssl/cipher.rb:33: warning: previous definition of AES192 was here
/Users/james/.rbenv/versions/2.4.1/lib/ruby/2.4.0/openssl/cipher.rb:28: warning: constant OpenSSL::Cipher::Cipher is deprecated
/Users/james/.rbenv/versions/2.4.1/lib/ruby/2.4.0/openssl/cipher.rb:33: warning: already initialized constant OpenSSL::Cipher::AES256
/Users/james/.rbenv/versions/2.4.1/lib/ruby/gems/2.4.0/gems/openssl-2.0.5/lib/openssl/cipher.rb:33: warning: previous definition of AES256 was here
/Users/james/.rbenv/versions/2.4.1/lib/ruby/2.4.0/openssl/cipher.rb:64: warning: constant OpenSSL::Cipher::Cipher is deprecated
/Users/james/.rbenv/versions/2.4.1/lib/ruby/2.4.0/openssl/cipher.rb:64: warning: constant OpenSSL::Cipher::Cipher is deprecated
/Users/james/.rbenv/versions/2.4.1/lib/ruby/2.4.0/openssl/cipher.rb:64:in `<class:Cipher>': superclass mismatch for class Cipher (TypeError)
    from /Users/james/.rbenv/versions/2.4.1/lib/ruby/2.4.0/openssl/cipher.rb:16:in `<module:OpenSSL>'
    from /Users/james/.rbenv/versions/2.4.1/lib/ruby/2.4.0/openssl/cipher.rb:15:in `<top (required)>'
    from /Users/james/.rbenv/versions/2.4.1/lib/ruby/2.4.0/openssl.rb:17:in `require'
    from /Users/james/.rbenv/versions/2.4.1/lib/ruby/2.4.0/openssl.rb:17:in `<top (required)>'
    from /Users/james/.rbenv/versions/2.4.1/lib/ruby/gems/2.4.0/gems/activesupport-5.1.4/lib/active_support/key_generator.rb:2:in `require'
    from /Users/james/.rbenv/versions/2.4.1/lib/ruby/gems/2.4.0/gems/activesupport-5.1.4/lib/active_support/key_generator.rb:2:in `<top (required)>'
    from /Users/james/.rbenv/versions/2.4.1/lib/ruby/gems/2.4.0/gems/railties-5.1.4/lib/rails/application.rb:4:in `require'
    from /Users/james/.rbenv/versions/2.4.1/lib/ruby/gems/2.4.0/gems/railties-5.1.4/lib/rails/application.rb:4:in `<top (required)>'
    from /Users/james/.rbenv/versions/2.4.1/lib/ruby/gems/2.4.0/gems/railties-5.1.4/lib/rails.rb:12:in `require'
    from /Users/james/.rbenv/versions/2.4.1/lib/ruby/gems/2.4.0/gems/railties-5.1.4/lib/rails.rb:12:in `<top (required)>'
    from /Users/james/.rbenv/versions/2.4.1/lib/ruby/gems/2.4.0/gems/railties-5.1.4/lib/rails/all.rb:1:in `require'
    from /Users/james/.rbenv/versions/2.4.1/lib/ruby/gems/2.4.0/gems/railties-5.1.4/lib/rails/all.rb:1:in `<top (required)>'
    from /Users/james/sites/mergefreezev2/config/application.rb:3:in `require'
    from /Users/james/sites/mergefreezev2/config/application.rb:3:in `<top (required)>'
    from /Users/james/sites/mergefreezev2/config/environment.rb:2:in `require_relative'
    from /Users/james/sites/mergefreezev2/config/environment.rb:2:in `<top (required)>'
    from clock.rb:4:in `require_relative'
    from clock.rb:4:in `<main>'

Gemfile (aside from rails 5.1 default gems)

gem 'omniauth'
gem 'omniauth-github'
gem 'httparty'
gem 'resque'
gem 'resque-web', require: 'resque_web'
gem 'chronic'
gem 'tzinfo'
gem 'clockwork'
gem 'geoip'

Local Gem List:

$ gem list

*** LOCAL GEMS ***

actioncable (5.1.4, 5.1.3)
actionmailer (5.1.4, 5.1.3)
actionpack (5.1.4, 5.1.3)
actionview (5.1.4, 5.1.3)
activejob (5.1.4, 5.1.3)
activemodel (5.1.4, 5.1.3)
activerecord (5.1.4, 5.1.3)
activesupport (5.1.4, 5.1.3)
addressable (2.5.2)
arel (8.0.0)
bcrypt (3.1.11)
bigdecimal (default: 1.3.0)
bindex (0.5.0)
builder (3.2.3)
bundler (1.16.1, 1.15.4)
byebug (9.1.0)
capybara (2.17.0, 2.16.1, 2.15.1)
childprocess (0.8.0, 0.7.1)
chronic (0.10.2)
clockwork (2.0.2)
coderay (1.1.2)
coffee-rails (4.2.2)
coffee-script (2.4.1)
coffee-script-source (1.12.2)
commonjs (0.2.7)
concurrent-ruby (1.0.5)
crass (1.0.3)
devise (4.3.0)
did_you_mean (1.1.0)
domain_name (0.5.20170404)
erubi (1.7.0, 1.6.1)
et-orbi (1.0.8)
execjs (2.7.0)
faraday (0.13.1, 0.12.2)
ffi (1.9.18)
font-awesome-sass (4.7.0)
geoip (1.6.3)
globalid (0.4.1, 0.4.0)
hashie (3.5.7, 3.5.6)
http-cookie (1.0.3)
httparty (0.15.6)
i18n (0.9.1, 0.8.6)
io-console (default: 0.4.6)
jbuilder (2.7.0)
jquery-rails (4.3.1)
json (default: 2.0.2)
jwt (1.5.6)
less (2.6.0)
less-rails (2.8.0)
listen (3.1.5)
loofah (2.1.1, 2.0.3)
mail (2.7.0, 2.6.6)
mailgun_rails (0.9.0)
method_source (0.9.0, 0.8.2)
mime-types (3.1)
mime-types-data (3.2016.0521)
mini_mime (1.0.0, 0.1.4)
mini_portile2 (2.3.0, 2.2.0)
minitest (5.11.1)
mono_logger (1.1.0)
multi_json (1.12.2, 1.12.1)
multi_xml (0.6.0)
multipart-post (2.0.0)
mustermann (1.0.1)
mysql2 (0.4.10, 0.4.9)
net-telnet (0.1.1)
netrc (0.11.0)
nio4r (2.2.0, 2.1.0)
nokogiri (1.8.1, 1.8.0)
oauth2 (1.4.0)
octokit (4.7.0)
omniauth (1.8.1, 1.6.1)
omniauth-github (1.3.0, 1.1.2)
omniauth-google-oauth2 (0.5.2)
omniauth-oauth2 (1.5.0, 1.4.0, 1.3.1)
omniauth-slack (2.3.0)
openssl (2.0.5, default: 2.0.3)
orm_adapter (0.5.0)
power_assert (0.4.1)
pry (0.11.3, 0.10.4)
psych (default: 2.2.2)
public_suffix (3.0.1, 3.0.0)
puma (3.11.0, 3.10.0)
rack (2.0.3)
rack-protection (2.0.0)
rack-test (0.8.2, 0.7.0, 0.6.3)
rails (5.1.4, 5.1.3)
rails-dom-testing (2.0.3)
rails-html-sanitizer (1.0.3)
railties (5.1.4, 5.1.3)
rake (12.3.0, 12.0.0)
rb-fsevent (0.10.2)
rb-inotify (0.9.10)
rdoc (default: 5.0.0)
redis (4.0.1)
redis-namespace (1.6.0)
responders (2.4.0)
resque (1.27.4)
resque-scheduler (4.3.1)
resque-scheduler-web (1.1.0)
resque-web (0.0.12)
rest-client (2.0.2)
ruby_dep (1.5.0)
rubyzip (1.2.1)
rufus-scheduler (3.4.2)
sass (3.5.5, 3.5.4, 3.5.3, 3.5.1)
sass-listen (4.0.0)
sass-rails (5.0.7, 5.0.6)
sawyer (0.8.1)
selenium-webdriver (3.8.0, 3.7.0, 3.5.2, 3.5.1)
sinatra (2.0.0)
slop (3.6.0)
spring (2.0.2)
spring-watcher-listen (2.0.1)
sprockets (3.7.1)
sprockets-rails (3.2.1)
sqlite3 (1.3.13)
test-unit (3.2.3)
thor (0.20.0)
thread_safe (0.3.6)
tilt (2.0.8)
turbolinks (5.0.1)
turbolinks-source (5.0.3)
twitter-bootstrap-rails (4.0.0)
tzinfo (1.2.4, 1.2.3)
tzinfo-data (1.2017.3)
uglifier (4.1.2, 4.1.0, 3.2.0)
unf (0.1.4)
unf_ext (0.0.7.4)
vegas (0.1.11)
warden (1.2.7)
web-console (3.5.1)
websocket-driver (0.6.5)
websocket-extensions (0.1.3, 0.1.2)
xmlrpc (0.2.1)
xpath (3.0.0, 2.1.0)

Solution

  • Issue was that I had two versions of the openssl gem trying to be loaded at the same time.

    doing a gem list showed: openssl (2.0.5, default: 2.0.3)

    Reverting to the default version fixed the problem:

    gem uninstall openssl -v 2.0.5
    gem install openssl -v 2.0.3