Shane Mingins
2010-Jul-19 00:32 UTC
[rspec-users] Gem conflict with RSpec::Rails and Sunspot
Hi All I was wondering if someone could perhaps point me to where in RSpec::Rails is the Rails ActionController being subclassed by an Object instance? My ruby-fu is not high enough to work out what''s really going on with RSpec::Rails with this. The problem I am having (and I have a code example in the github link below if you want to see, just clone and run rake spec) is that Sunspot is adding an after filter to already loaded subclasses of ActionController::Base. loaded_controllers [base].concat(base.subclasses.map { |subclass| subclass.constantize }) But that map is returning: ["ActionView::TestCase::TestController", "ApplicationController", "#<Class:0x1022e1168>", "Spec::Rails::Example::ViewExampleGroupController", "Spec::Rails::Example::HelperExampleGroupController"] So I am trying to find what #<Class:0x1022e1168> is and where it''s subclassing ActionController. If I comment out config.gem "rspec-rails" in the environment.rb the problem goes away, but that is not a solution as I have boiled this issue down to what I have here from a project that is actually using bundler and so these gems are being specified and required. As I do not know what in RSpec::Rails is actually causing the issue I cannot raise this as an issue with Sunspot with an example of possibly what they should be excluding in their code, if that is the solution to move to. So if anyone could help me out in any way?? I''m happy to do more "leg work" if you could give me some pointers. Cheers Shane git repo showing issue: http://github.com/smingins/rspec-sunspot-conflict using ruby 1.8.7 ruby -v ruby 1.8.7 (2009-06-12 patchlevel 174) [universal-darwin10.0] -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://rubyforge.org/pipermail/rspec-users/attachments/20100719/b318fbdc/attachment.html>
Shane Mingins
2010-Jul-19 01:21 UTC
[rspec-users] Gem conflict with RSpec::Rails and Sunspot
Seems to be related to the line ''tests Class.new(ActionController::Base)'' module Spec module Rails module Example class RoutingExampleGroup < ActionController::TestCase tests Class.new(ActionController::Base) Spec::Example::ExampleGroupFactory.register(:routing, self) end end end end On 19 July 2010 12:32, Shane Mingins <elc at mingins.com> wrote:> Hi All > > I was wondering if someone could perhaps point me to where in RSpec::Rails > is the Rails ActionController being subclassed by an Object instance? My > ruby-fu is not high enough to work out what''s really going on with > RSpec::Rails with this. > > The problem I am having (and I have a code example in the github link below > if you want to see, just clone and run rake spec) is that Sunspot is adding > an after filter to already loaded subclasses of ActionController::Base. > > loaded_controllers > [base].concat(base.subclasses.map { |subclass| > subclass.constantize }) > > But that map is returning: > > ["ActionView::TestCase::TestController", "ApplicationController", > "#<Class:0x1022e1168>", > "Spec::Rails::Example::ViewExampleGroupController", > "Spec::Rails::Example::HelperExampleGroupController"] > > So I am trying to find what #<Class:0x1022e1168> is and where it''s > subclassing ActionController. > > If I comment out config.gem "rspec-rails" in the environment.rb the problem > goes away, but that is not a solution as I have boiled this issue down to > what I have here from a project that is actually using bundler and so these > gems are being specified and required. > > As I do not know what in RSpec::Rails is actually causing the issue I > cannot raise this as an issue with Sunspot with an example of possibly what > they should be excluding in their code, if that is the solution to move to. > > So if anyone could help me out in any way?? I''m happy to do more "leg > work" if you could give me some pointers. > > Cheers > Shane > > > git repo showing issue: > http://github.com/smingins/rspec-sunspot-conflict > > using ruby 1.8.7 > ruby -v > ruby 1.8.7 (2009-06-12 patchlevel 174) [universal-darwin10.0] >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://rubyforge.org/pipermail/rspec-users/attachments/20100719/a49fa67b/attachment.html>
Shane Mingins
2010-Jul-19 01:29 UTC
[rspec-users] Gem conflict with RSpec::Rails and Sunspot
And so ... # Sets the controller class name. Useful if the name can''t be inferred from test class. # Expects +controller_class+ as a constant. Example: <tt>tests WidgetController</tt>. def tests(controller_class) self.controller_class = controller_class end But RoutingExampleGroup is: tests Class.new(ActionController::Base) Seems it''s being called incorrectly from RoutingExampleGroup, is that right? On 19 July 2010 13:21, Shane Mingins <elc at mingins.com> wrote:> Seems to be related to the line ''tests Class.new(ActionController::Base)'' > > module Spec > module Rails > module Example > > class RoutingExampleGroup < ActionController::TestCase > tests Class.new(ActionController::Base) > > Spec::Example::ExampleGroupFactory.register(:routing, self) > end > > end > end > end > > On 19 July 2010 12:32, Shane Mingins <elc at mingins.com> wrote: > >> Hi All >> >> I was wondering if someone could perhaps point me to where in RSpec::Rails >> is the Rails ActionController being subclassed by an Object instance? My >> ruby-fu is not high enough to work out what''s really going on with >> RSpec::Rails with this. >> >> The problem I am having (and I have a code example in the github link >> below if you want to see, just clone and run rake spec) is that Sunspot is >> adding an after filter to already loaded subclasses >> of ActionController::Base. >> >> loaded_controllers >> [base].concat(base.subclasses.map { |subclass| >> subclass.constantize }) >> >> But that map is returning: >> >> ["ActionView::TestCase::TestController", "ApplicationController", >> "#<Class:0x1022e1168>", >> "Spec::Rails::Example::ViewExampleGroupController", >> "Spec::Rails::Example::HelperExampleGroupController"] >> >> So I am trying to find what #<Class:0x1022e1168> is and where it''s >> subclassing ActionController. >> >> If I comment out config.gem "rspec-rails" in the environment.rb the >> problem goes away, but that is not a solution as I have boiled this issue >> down to what I have here from a project that is actually using bundler and >> so these gems are being specified and required. >> >> As I do not know what in RSpec::Rails is actually causing the issue I >> cannot raise this as an issue with Sunspot with an example of possibly what >> they should be excluding in their code, if that is the solution to move to. >> >> So if anyone could help me out in any way?? I''m happy to do more "leg >> work" if you could give me some pointers. >> >> Cheers >> Shane >> >> >> git repo showing issue: >> http://github.com/smingins/rspec-sunspot-conflict >> >> using ruby 1.8.7 >> ruby -v >> ruby 1.8.7 (2009-06-12 patchlevel 174) [universal-darwin10.0] >> > >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://rubyforge.org/pipermail/rspec-users/attachments/20100719/c23c85b4/attachment.html>
David Chelimsky
2010-Jul-19 01:42 UTC
[rspec-users] Gem conflict with RSpec::Rails and Sunspot
On Jul 18, 2010, at 8:21 PM, Shane Mingins wrote:> On 19 July 2010 12:32, Shane Mingins <elc at mingins.com> wrote: > Hi All > > I was wondering if someone could perhaps point me to where in RSpec::Rails is the Rails ActionController being subclassed by an Object instance? My ruby-fu is not high enough to work out what''s really going on with RSpec::Rails with this. > > The problem I am having (and I have a code example in the github link below if you want to see, just clone and run rake spec) is that Sunspot is adding an after filter to already loaded subclasses of ActionController::Base. > > loaded_controllers > [base].concat(base.subclasses.map { |subclass| subclass.constantize }) > > But that map is returning: > > ["ActionView::TestCase::TestController", "ApplicationController", "#<Class:0x1022e1168>", > "Spec::Rails::Example::ViewExampleGroupController", "Spec::Rails::Example::HelperExampleGroupController"] > > So I am trying to find what #<Class:0x1022e1168> is and where it''s subclassing ActionController. > > If I comment out config.gem "rspec-rails" in the environment.rb the problem goes away, but that is not a solution as I have boiled this issue down to what I have here from a project that is actually using bundler and so these gems are being specified and required. > > As I do not know what in RSpec::Rails is actually causing the issue I cannot raise this as an issue with Sunspot with an example of possibly what they should be excluding in their code, if that is the solution to move to. > > So if anyone could help me out in any way?? I''m happy to do more "leg work" if you could give me some pointers. > > Cheers > Shane > > > git repo showing issue: > http://github.com/smingins/rspec-sunspot-conflict> Seems to be related to the line ''tests Class.new(ActionController::Base)'' > > module Spec > module Rails > module Example > > class RoutingExampleGroup < ActionController::TestCase > tests Class.new(ActionController::Base) > > Spec::Example::ExampleGroupFactory.register(:routing, self) > end > > end > end > endYeah - that looks like it. Given that Class.new(BaseClass) is a common Ruby metaprogramming idiom, this strikes me as a sunspot issue. WDYT? -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://rubyforge.org/pipermail/rspec-users/attachments/20100718/07b5c710/attachment-0001.html>
David Chelimsky
2010-Jul-19 01:45 UTC
[rspec-users] Gem conflict with RSpec::Rails and Sunspot
On Jul 18, 2010, at 8:29 PM, Shane Mingins wrote:> And so ... > > # Sets the controller class name. Useful if the name can''t be inferred from test class. > # Expects +controller_class+ as a constant. Example: <tt>tests WidgetController</tt>. > def tests(controller_class) > self.controller_class = controller_class > end > > But RoutingExampleGroup is: tests Class.new(ActionController::Base) > > Seems it''s being called incorrectly from RoutingExampleGroup, is that right?Class.new(ActionController::Base) is standard Ruby for an anonymous subclass. Nothing incorrect about it, but there''s no significant value in having it be anonymous, so I''d be OK changing it to a named subclass (i.e. RoutingExampleGroupController < ActionController::Base). Wanna make a patch?> > > On 19 July 2010 13:21, Shane Mingins <elc at mingins.com> wrote: > Seems to be related to the line ''tests Class.new(ActionController::Base)'' > > module Spec > module Rails > module Example > > class RoutingExampleGroup < ActionController::TestCase > tests Class.new(ActionController::Base) > > Spec::Example::ExampleGroupFactory.register(:routing, self) > end > > end > end > end > > On 19 July 2010 12:32, Shane Mingins <elc at mingins.com> wrote: > Hi All > > I was wondering if someone could perhaps point me to where in RSpec::Rails is the Rails ActionController being subclassed by an Object instance? My ruby-fu is not high enough to work out what''s really going on with RSpec::Rails with this. > > The problem I am having (and I have a code example in the github link below if you want to see, just clone and run rake spec) is that Sunspot is adding an after filter to already loaded subclasses of ActionController::Base. > > loaded_controllers > [base].concat(base.subclasses.map { |subclass| subclass.constantize }) > > But that map is returning: > > ["ActionView::TestCase::TestController", "ApplicationController", "#<Class:0x1022e1168>", > "Spec::Rails::Example::ViewExampleGroupController", "Spec::Rails::Example::HelperExampleGroupController"] > > So I am trying to find what #<Class:0x1022e1168> is and where it''s subclassing ActionController. > > If I comment out config.gem "rspec-rails" in the environment.rb the problem goes away, but that is not a solution as I have boiled this issue down to what I have here from a project that is actually using bundler and so these gems are being specified and required. > > As I do not know what in RSpec::Rails is actually causing the issue I cannot raise this as an issue with Sunspot with an example of possibly what they should be excluding in their code, if that is the solution to move to. > > So if anyone could help me out in any way?? I''m happy to do more "leg work" if you could give me some pointers. > > Cheers > Shane > > > git repo showing issue: > http://github.com/smingins/rspec-sunspot-conflict > > using ruby 1.8.7 > ruby -v > ruby 1.8.7 (2009-06-12 patchlevel 174) [universal-darwin10.0] > > > _______________________________________________ > rspec-users mailing list > rspec-users at rubyforge.org > http://rubyforge.org/mailman/listinfo/rspec-users-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://rubyforge.org/pipermail/rspec-users/attachments/20100718/d3b64464/attachment.html>
Shane Mingins
2010-Jul-19 02:03 UTC
[rspec-users] Gem conflict with RSpec::Rails and Sunspot
Does Class.new(ActionController::Base) pass it to tests as a constant though? Reading comment # Expects +controller_class+ as a constant. Example: <tt>tests WidgetController</tt>. This is just me wondering if I am missing something with that Class.new(ActionController::Base) idiom. Patch would just be a revert of http://github.com/dchelimsky/rspec-rails/commit/b488f3c9bd70011f1288f23b55490810b1fc693dthough right? I can do that and put it on lighthouse if you want ... and it goes up here https://rspec.lighthouseapp.com/projects/5645-rspec ?? And thanks for replying on Sunday :-) Cheers Shane On 19 July 2010 13:45, David Chelimsky <dchelimsky at gmail.com> wrote:> > On Jul 18, 2010, at 8:29 PM, Shane Mingins wrote: > > And so ... > > # Sets the controller class name. Useful if the name can''t be > inferred from test class. > # Expects +controller_class+ as a constant. Example: <tt>tests > WidgetController</tt>. > def tests(controller_class) > self.controller_class = controller_class > end > > But RoutingExampleGroup is: tests Class.new(ActionController::Base) > > Seems it''s being called incorrectly from RoutingExampleGroup, is that > right? > > > Class.new(ActionController::Base) is standard Ruby for an anonymous > subclass. Nothing incorrect about it, but there''s no significant value in > having it be anonymous, so I''d be OK changing it to a named subclass (i.e. > RoutingExampleGroupController < ActionController::Base). Wanna make a patch? > > > > On 19 July 2010 13:21, Shane Mingins <elc at mingins.com> wrote: > >> Seems to be related to the line ''tests Class.new(ActionController::Base)'' >> >> module Spec >> module Rails >> module Example >> >> class RoutingExampleGroup < ActionController::TestCase >> tests Class.new(ActionController::Base) >> >> Spec::Example::ExampleGroupFactory.register(:routing, self) >> end >> >> end >> end >> end >> >> On 19 July 2010 12:32, Shane Mingins <elc at mingins.com> wrote: >> >>> Hi All >>> >>> I was wondering if someone could perhaps point me to where in >>> RSpec::Rails is the Rails ActionController being subclassed by an Object >>> instance? My ruby-fu is not high enough to work out what''s really going on >>> with RSpec::Rails with this. >>> >>> The problem I am having (and I have a code example in the github link >>> below if you want to see, just clone and run rake spec) is that Sunspot is >>> adding an after filter to already loaded subclasses >>> of ActionController::Base. >>> >>> loaded_controllers >>> [base].concat(base.subclasses.map { |subclass| >>> subclass.constantize }) >>> >>> But that map is returning: >>> >>> ["ActionView::TestCase::TestController", "ApplicationController", >>> "#<Class:0x1022e1168>", >>> "Spec::Rails::Example::ViewExampleGroupController", >>> "Spec::Rails::Example::HelperExampleGroupController"] >>> >>> So I am trying to find what #<Class:0x1022e1168> is and where it''s >>> subclassing ActionController. >>> >>> If I comment out config.gem "rspec-rails" in the environment.rb the >>> problem goes away, but that is not a solution as I have boiled this issue >>> down to what I have here from a project that is actually using bundler and >>> so these gems are being specified and required. >>> >>> As I do not know what in RSpec::Rails is actually causing the issue I >>> cannot raise this as an issue with Sunspot with an example of possibly what >>> they should be excluding in their code, if that is the solution to move to. >>> >>> So if anyone could help me out in any way?? I''m happy to do more "leg >>> work" if you could give me some pointers. >>> >>> Cheers >>> Shane >>> >>> >>> git repo showing issue: >>> http://github.com/smingins/rspec-sunspot-conflict >>> >>> using ruby 1.8.7 >>> ruby -v >>> ruby 1.8.7 (2009-06-12 patchlevel 174) [universal-darwin10.0] >>> >> >> > _______________________________________________ > rspec-users mailing list > rspec-users at rubyforge.org > http://rubyforge.org/mailman/listinfo/rspec-users > > > > _______________________________________________ > rspec-users mailing list > rspec-users at rubyforge.org > http://rubyforge.org/mailman/listinfo/rspec-users >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://rubyforge.org/pipermail/rspec-users/attachments/20100719/25be1139/attachment.html>
David Chelimsky
2010-Jul-19 02:12 UTC
[rspec-users] Gem conflict with RSpec::Rails and Sunspot
On Jul 18, 2010, at 9:03 PM, Shane Mingins wrote:> Does Class.new(ActionController::Base) pass it to tests as a constant though? Reading comment # Expects +controller_class+ as a constant. Example: <tt>tests WidgetController</tt>. This is just me wondering if I am missing something with that Class.new(ActionController::Base) idiom. > > Patch would just be a revert of http://github.com/dchelimsky/rspec-rails/commit/b488f3c9bd70011f1288f23b55490810b1fc693d though right? > > I can do that and put it on lighthouse if you want ... and it goes up here https://rspec.lighthouseapp.com/projects/5645-rspec ??Yep - didn''t realize it was just a revert (nice research!) but feel free to patch and post it. FYI - I have no plans to do a 1.3.3 release any time soon - too much going on with Rails 3 and RSpec 2 right now. David> And thanks for replying on Sunday :-) > > Cheers > Shane > > On 19 July 2010 13:45, David Chelimsky <dchelimsky at gmail.com> wrote: > > On Jul 18, 2010, at 8:29 PM, Shane Mingins wrote: > >> And so ... >> >> # Sets the controller class name. Useful if the name can''t be inferred from test class. >> # Expects +controller_class+ as a constant. Example: <tt>tests WidgetController</tt>. >> def tests(controller_class) >> self.controller_class = controller_class >> end >> >> But RoutingExampleGroup is: tests Class.new(ActionController::Base) >> >> Seems it''s being called incorrectly from RoutingExampleGroup, is that right? > > Class.new(ActionController::Base) is standard Ruby for an anonymous subclass. Nothing incorrect about it, but there''s no significant value in having it be anonymous, so I''d be OK changing it to a named subclass (i.e. RoutingExampleGroupController < ActionController::Base). Wanna make a patch? > >> >> >> On 19 July 2010 13:21, Shane Mingins <elc at mingins.com> wrote: >> Seems to be related to the line ''tests Class.new(ActionController::Base)'' >> >> module Spec >> module Rails >> module Example >> >> class RoutingExampleGroup < ActionController::TestCase >> tests Class.new(ActionController::Base) >> >> Spec::Example::ExampleGroupFactory.register(:routing, self) >> end >> >> end >> end >> end >> >> On 19 July 2010 12:32, Shane Mingins <elc at mingins.com> wrote: >> Hi All >> >> I was wondering if someone could perhaps point me to where in RSpec::Rails is the Rails ActionController being subclassed by an Object instance? My ruby-fu is not high enough to work out what''s really going on with RSpec::Rails with this. >> >> The problem I am having (and I have a code example in the github link below if you want to see, just clone and run rake spec) is that Sunspot is adding an after filter to already loaded subclasses of ActionController::Base. >> >> loaded_controllers >> [base].concat(base.subclasses.map { |subclass| subclass.constantize }) >> >> But that map is returning: >> >> ["ActionView::TestCase::TestController", "ApplicationController", "#<Class:0x1022e1168>", >> "Spec::Rails::Example::ViewExampleGroupController", "Spec::Rails::Example::HelperExampleGroupController"] >> >> So I am trying to find what #<Class:0x1022e1168> is and where it''s subclassing ActionController. >> >> If I comment out config.gem "rspec-rails" in the environment.rb the problem goes away, but that is not a solution as I have boiled this issue down to what I have here from a project that is actually using bundler and so these gems are being specified and required. >> >> As I do not know what in RSpec::Rails is actually causing the issue I cannot raise this as an issue with Sunspot with an example of possibly what they should be excluding in their code, if that is the solution to move to. >> >> So if anyone could help me out in any way?? I''m happy to do more "leg work" if you could give me some pointers. >> >> Cheers >> Shane >> >> >> git repo showing issue: >> http://github.com/smingins/rspec-sunspot-conflict >> >> using ruby 1.8.7 >> ruby -v >> ruby 1.8.7 (2009-06-12 patchlevel 174) [universal-darwin10.0] >> >> >> _______________________________________________ >> rspec-users mailing list >> rspec-users at rubyforge.org >> http://rubyforge.org/mailman/listinfo/rspec-users > > > _______________________________________________ > rspec-users mailing list > rspec-users at rubyforge.org > http://rubyforge.org/mailman/listinfo/rspec-users > > _______________________________________________ > rspec-users mailing list > rspec-users at rubyforge.org > http://rubyforge.org/mailman/listinfo/rspec-users-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://rubyforge.org/pipermail/rspec-users/attachments/20100718/5c4d8a26/attachment-0001.html>