Hi All,
I know this has been discussed before in the thread "Install foreman 
plugins on RPM based installation" but that was resolved back in 2013. I'm 
new to ruby and foreman so I couldn't quite follow the ins and outs of that 
resolution. So I thought I'd better re-ask in a new thread.

I'm trying to follow the steps outlined in:

http://projects.theforeman.org/projects/foreman/wiki/How_to_Create_a_Plugin#RPM-installations

I've managed to install what I suppose is a development instance of foreman 
from the git branch 1.12-stable and successfully added my plugin to the 
foreman instance. It adds the extra menus and appears on the About page.

I then built my gem as instructed with:

*gem build my_foreman_plugin.gemspec *

which gave me a my_foreman_plugin-0.0.1.gem... all good! My first ever gem.

It's the next step that's causing me dramas...

I hop on to the "production" machine I've been asked to use for my plugin 
testing (it's running 1.12), I copy the my_foreman_plugin-0.0.1.gem across, 
but the server doesn't have an "scl ruby193" software collection however, 
it does have the following collections:

[root@fman-vgrnt-01 ~]# *scl --list*
rh-ruby22
sclo-ror42
tfm

So I gave the following a whirl and it seemed to be happy (strange that the 
tfm software collection seems to install into the rh-ruby22 software 
collection):

[root@cpos-fman-vgrnt-01 vagrant]# *scl enable tfm "gem install --verbose 
--ignore-dependencies foreman_my_plugin-0.0.1.gem"*
/opt/rh/rh-ruby22/root/usr/local/share/gems/gems/foreman_my_plugin-0.0.1/LICENSE
/opt/rh/rh-ruby22/root/usr/local/share/gems/gems/foreman_my_plugin-0.0.1/README.md
/opt/rh/rh-ruby22/root/usr/local/share/gems/gems/foreman_my_plugin-0.0.1/Rakefile
/opt/rh/rh-ruby22/root/usr/local/share/gems/gems/foreman_my_plugin-0.0.1/app/controllers/foreman_my_plugin/hosts_controller.rb
/opt/rh/rh-ruby22/root/usr/local/share/gems/gems/foreman_my_plugin-0.0.1/app/helpers/concerns/foreman_my_plugin/hosts_helper_extensions.rb
/opt/rh/rh-ruby22/root/usr/local/share/gems/gems/foreman_my_plugin-0.0.1/app/models/concerns/foreman_my_plugin/host_extensions.rb
/opt/rh/rh-ruby22/root/usr/local/share/gems/gems/foreman_my_plugin-0.0.1/app/overrides/dashboard/index/sample_override.html.erb.deface
/opt/rh/rh-ruby22/root/usr/local/share/gems/gems/foreman_my_plugin-0.0.1/app/views/dashboard/_foreman_my_plugin_widget.html.erb
/opt/rh/rh-ruby22/root/usr/local/share/gems/gems/foreman_my_plugin-0.0.1/app/views/foreman_my_plugin/hosts/hosts/new_action.html.erb
/opt/rh/rh-ruby22/root/usr/local/share/gems/gems/foreman_my_plugin-0.0.1/app/views/foreman_my_plugin/hosts/new_action.html.erb
/opt/rh/rh-ruby22/root/usr/local/share/gems/gems/foreman_my_plugin-0.0.1/app/views/foreman_my_plugin/layouts/layouts/new_layout.html.erb
/opt/rh/rh-ruby22/root/usr/local/share/gems/gems/foreman_my_plugin-0.0.1/app/views/foreman_my_plugin/layouts/new_layout.html.erb
/opt/rh/rh-ruby22/root/usr/local/share/gems/gems/foreman_my_plugin-0.0.1/config/routes.rb
/opt/rh/rh-ruby22/root/usr/local/share/gems/gems/foreman_my_plugin-0.0.1/lib/foreman_my_plugin.rb
/opt/rh/rh-ruby22/root/usr/local/share/gems/gems/foreman_my_plugin-0.0.1/lib/foreman_my_plugin/engine.rb
/opt/rh/rh-ruby22/root/usr/local/share/gems/gems/foreman_my_plugin-0.0.1/lib/foreman_my_plugin/version.rb
/opt/rh/rh-ruby22/root/usr/local/share/gems/gems/foreman_my_plugin-0.0.1/lib/tasks/foreman_my_plugin_tasks.rake
/opt/rh/rh-ruby22/root/usr/local/share/gems/gems/foreman_my_plugin-0.0.1/locale/Makefile
/opt/rh/rh-ruby22/root/usr/local/share/gems/gems/foreman_my_plugin-0.0.1/locale/en/foreman_my_plugin.po
/opt/rh/rh-ruby22/root/usr/local/share/gems/gems/foreman_my_plugin-0.0.1/locale/foreman_my_plugin.pot
/opt/rh/rh-ruby22/root/usr/local/share/gems/gems/foreman_my_plugin-0.0.1/locale/gemspec.rb
/opt/rh/rh-ruby22/root/usr/local/share/gems/gems/foreman_my_plugin-0.0.1/test/factories/foreman_my_plugin_factories.rb
/opt/rh/rh-ruby22/root/usr/local/share/gems/gems/foreman_my_plugin-0.0.1/test/test_plugin_helper.rb
/opt/rh/rh-ruby22/root/usr/local/share/gems/gems/foreman_my_plugin-0.0.1/test/unit/foreman_my_plugin_test.rb
Successfully installed foreman_my_plugin-0.0.1
Parsing documentation for foreman_my_plugin-0.0.1
Parsing sources...
100% [ 4/ 4]  lib/tasks/foreman_my_plugin_tasks.rake
Done installing documentation for foreman_my_plugin after 0 seconds
1 gem installed

However, when I restart the apache server, I'm told the plugin's dependency 
on the deface gem is a problem:

Web application could not be started

Gem loading error: Could not find 'deface' (>= 0) among 91 total gem(s)
Checked in 
'GEM_PATH=/opt/theforeman/tfm/root/usr/share/gems:/opt/rh/sclo-ror42/root/usr/share/gems:/cpos-local/usr/share/foreman/.gem/ruby:/opt/rh/rh-ruby22/root/usr/share/gems:/opt/rh/rh-ruby22/root/usr/local/share/gems/opt/rh/sclo-ror42/root/usr/share/gems:/opt/rh/rh-ruby22/root/usr/local/share/gems',
 
execute `gem env` for more information (RuntimeError)
  
/opt/theforeman/tfm/root/usr/share/gems/gems/bundler_ext-0.3.0/lib/bundler_ext/bundler_ext.rb:30:in
 
`strict_error'
  
/opt/theforeman/tfm/root/usr/share/gems/gems/bundler_ext-0.3.0/lib/bundler_ext/bundler_ext.rb:56:in
 
`rescue in block in system_require'
  
/opt/theforeman/tfm/root/usr/share/gems/gems/bundler_ext-0.3.0/lib/bundler_ext/bundler_ext.rb:37:in
 
`block in system_require'
  
/opt/theforeman/tfm/root/usr/share/gems/gems/bundler_ext-0.3.0/lib/bundler_ext/bundler_ext.rb:35:in
 
`each'
  
/opt/theforeman/tfm/root/usr/share/gems/gems/bundler_ext-0.3.0/lib/bundler_ext/bundler_ext.rb:35:in
 
`system_require'
  /cpos-local/usr/share/foreman/config/application.rb:16:in `<top 
(required)>'
  
/opt/rh/rh-ruby22/root/usr/share/rubygems/rubygems/core_ext/kernel_require.rb:54:in
 
`require'
  
/opt/rh/rh-ruby22/root/usr/share/rubygems/rubygems/core_ext/kernel_require.rb:54:in
 
`require'
  /cpos-local/usr/share/foreman/config/environment.rb:2:in `<top 
(required)>'
  
/opt/rh/rh-ruby22/root/usr/share/rubygems/rubygems/core_ext/kernel_require.rb:54:in
 
`require'
  
/opt/rh/rh-ruby22/root/usr/share/rubygems/rubygems/core_ext/kernel_require.rb:54:in
 
`require'
  config.ru:3:in `block in <main>'
  
/opt/rh/sclo-ror42/root/usr/share/gems/gems/rack-1.6.2/lib/rack/builder.rb:55:in
 
`instance_eval'
  
/opt/rh/sclo-ror42/root/usr/share/gems/gems/rack-1.6.2/lib/rack/builder.rb:55:in
 
`initialize'
  config.ru:1:in `new'
  config.ru:1:in `<main>'
  
/usr/lib/ruby/gems/1.8/gems/passenger-4.0.18/helper-scripts/rack-preloader.rb:105:in
 
`eval'
  
/usr/lib/ruby/gems/1.8/gems/passenger-4.0.18/helper-scripts/rack-preloader.rb:105:in
 
`preload_app'
  
/usr/lib/ruby/gems/1.8/gems/passenger-4.0.18/helper-scripts/rack-preloader.rb:150:in
 
`<module:App>'
  
/usr/lib/ruby/gems/1.8/gems/passenger-4.0.18/helper-scripts/rack-preloader.rb:29:in
 
`<module:PhusionPassenger>'
  
/usr/lib/ruby/gems/1.8/gems/passenger-4.0.18/helper-scripts/rack-preloader.rb:28:in
 
`<main>'

As I said, I'm new to ruby. I don't quite understand why the instruction 
tell me to use "--ignore-dependencies" when installing the gem nor do I 
understand why "deface" isn't already installed as a dependency of the 
production installation which is already using various plugins and smart 
proxies which I assume may require "deface".

I can find no evidence of a deface module already present on the system. 
Just the deface view overrides in my own plugin:

[root@cpos-fman-vgrnt-01 vagrant]# *locate deface*
/home/vagrant/foreman_my_plugin/app/overrides/dashboard/index/sample_override.html.erb.deface
/opt/foreman_my_plugin/app/overrides/dashboard/index/sample_override.html.erb.deface
/opt/rh/rh-ruby22/root/usr/local/share/gems/gems/foreman_my_plugin-0.0.1/app/overrides/dashboard/index/sample_override.html.erb.deface

Any help hugely appreciated...

Cheers,

Doug


-- 
You received this message because you are subscribed to the Google Groups 
"Foreman users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/foreman-users.
For more options, visit https://groups.google.com/d/optout.

Reply via email to