Standard rails plugins not supported in Radiant?

Hello,
Forgive me if this is a stupid or already covered question - i did
search on
the radiant site and mailing list, but did not see any conclusive
answers.

In a nutshell:
I see that the path to the plugins lib directory is properly added to
load_paths by railties/initializer.rb load_plugins().
But then the path is completely overwritten in
radiant/extension_loader.rb
discover_extensions()

Context:
I am trying use a regular rails plugin “acts_as_taggable_on_steroids”,
and
would like to use several others.
I dont need to use it as an extension in Radiant - it will be used
elsewhere
in the same application. (My app mixes Radiant with a rails app through
the
lovely “radiant_on_rails”, "share_layouts, and “record_tags”
extensions.)
It is probably possible to create an extension that wraps it - but I
would
prefer not too. It’s nicest (and easiest) if I can just load existing
rails
plugins and also keep them up to date as people release new versions.

The problem that I am having is that this plugin has several modules in
it’s
lib directory that cannot be discovered by rails
Dependencies.load_missing_constant because the path has been removed
from
the Dependencies.load_paths array by Radiant.

So when I try to use this Plugin I get a
"
NameError in TesterController#tagtest

Uninitialized constant
ActiveRecord::Acts::Taggable::InstanceMethods::TagList
"

Questions:
So, are plugins basically not supported in Radiant?
Is there a reason for that… and is there a reason for totally
overwritting
the Dependencies.load_paths array? Or is this something that could be
changed, for example that radiant/extension_loader.rb
discover_extensions()
appends the paths to load_paths instead of overwriting it?

Thanks for any insight into this!!!
cheers, topher


Christopher Z.
[email protected]
604-484-9279

It should be loaded. Are you storing it in RAILS_ROOT/vendor/plugins?
Have you modified the config.plugin_paths in config/environment.rb?

Sean

IIRC correctly, what Chris is describing is the reason I had to
explicitly load the rspec and rspec_on_rails plugins in
config/environments/test.rb. Somewhere along the line (and Chris may
have identified it), the plugin load paths are getting blown away.

Chris: try adding something like

config.load_paths << “#{RADIANT_ROOT}/vendor/plugins/rspec/lib”

(but the path for your plugin) to config/environment.rb in the
Radiant::Initializer block.

What was the original reason for clearing out the load_paths? Is it
something that should be re-examined?

-Andrew

The original reason is so that Radiant can be run from the gem or
vendor/radiant. Notice line 17-22 of config/environment.rb. However,
that should not affect plugin paths which are set later on in the file.
However, you may be onto something here.

Sean

Thanks alot for your feedback guys.

My plugin exists in the path:
myappname\vendor\plugins\myplugin

My environments.rb file looks like:

Make sure plugins are loaded from lib and vendor

config.plugin_paths = [
“#{RAILS_ROOT}/vendor/plugins”,
“#{RADIANT_ROOT}/lib/plugins”,
“#{RADIANT_ROOT}/vendor/plugins”
]


When I trace through the application - I see that my plugins are
properly
added to the Dependencies.load_path array in the
initializer.rbload_plugins() method.

But Dependencies.load_path gets overwritten here:
extension_loader.rb discover_extensions() method.
lines 78-88, actually on the last line…
(initializer.set_autoload_paths)

 extension_roots.each do |ext_path|
      load_paths = %w(lib app/models app/controllers app/helpers

test/helpers).collect { |p| “#{ext_path}/#{p}” }
load_paths << ext_path
load_paths.each { |p| configuration.load_paths << p;
$LOAD_PATH <<
p; }
configuration.controller_paths <<
“#{ext_path}/app/controllers”
configuration.view_paths << “#{ext_path}/app/views”
@extension_roots << ext_path
end
initializer.set_autoload_paths


Here is a fix that I have just tried, and seems to work…
Just in front of the “initializer.set_autoload_paths”
I added the line:
configuration.load_paths.concat(Dependencies.load_paths) #CLZ so that
rails
plugins still work??

The set_autoload_paths function basically sets Dependencies.load_paths
to
configuration.load_paths.


Does this seem sensible? So far it seems to work - but ive just done a
bit
of testing.

ps. same issue on 0.6.3 and 0.6.4
pps. I did just try putting the plugin inside of an extensions plugin
directory - and that works just fine. The problem is just when i put it
in
the plugin directory of the main RAILS_ROOT app.

-topher

On Dec 4, 2007 2:35 PM, Sean C. [email protected] wrote:

config/environments/test.rb. Somewhere along the line (and Chris may
something that should be re-examined?

load_paths by railties/initializer.rb load_plugins().
in the same application. (My app mixes Radiant with a rails app
in it’s

ActiveRecord::Acts::Taggable::InstanceMethods::TagList

Search: http://radiantcms.org/mailing-list/search/


Radiant mailing list
Post: [email protected]
Search: http://radiantcms.org/mailing-list/search/
Site: http://lists.radiantcms.org/mailman/listinfo/radiant


Christopher Z.
[email protected]
604-484-9279

Andrew, i tried your suggestion:
and added the following to environment.rb

config.load_paths << “#{RAILS_ROOT}/vendor/plugins/mypluginname/lib”

and that works!
I see that it is added to the path array properly.
Thanks!

-topher

On Dec 4, 2007 3:01 PM, Christopher Z. [email protected]
wrote:

"#{RADIANT_ROOT}/vendor/plugins"

)
end
The set_autoload_paths function basically sets Dependencies.load_paths to
the plugin directory of the main RAILS_ROOT app.

The original reason is so that Radiant can be run from the gem or

have identified it), the plugin load paths are getting blown away.

to
elsewhere

changed, for example that radiant/extension_loader.rb


Site: http://lists.radiantcms.org/mailman/listinfo/radiant


Christopher Z.
[email protected]
604-484-9279


Christopher Z.
[email protected]
604-484-9279

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs