I couldn't make this work with "default_form_builder" method. My solution was using a custom "form_for" method:
# application_helper.rb def app_form_for(object, options = {}) options.merge!(builder: AppFormBuilder) form_for object, options do |f| yield f end end And adding the Builder folder on autoload_paths. @Frederick Cheung: Thank you for your help! Em quinta-feira, 15 de janeiro de 2015 10:28:32 UTC-2, Frederick Cheung escreveu: > > > On Thursday, January 15, 2015 at 11:51:39 AM UTC, Andrey Nering wrote: >> >> I have a custom form builder for my application: >> I am requiring it in an initializer: >> >> require "#{Rails.root}/lib/ruby/app_form_builder.rb" >> ActionView::Base.default_form_builder = ActionView::Helpers:: >> AppFormBuilder >> >> >> This works, but I have to restart the server on every change. I was >> reading the Constant Guide >> <http://edgeguides.rubyonrails.org/autoloading_and_reloading_constants.html>, >> >> but didn't find the right way to made this file to be automaticaly >> reloaded. I tried to put this in /app/helpers forlder and making it default >> in application.rb, but I got "unitialized constant" error. >> >> > require is never a good idea if you want something to be reloaded. You've > also got a clash between the class name and it's location on disk - having > the class just be AppFormBuilder in lib/app_form_builder.rb should work. > > Lastly if you look into the bowels of action view, the > default_form_builder method looks like this > > def default_form_builder > builder = ActionView::Base.default_form_builder > builder.respond_to?(:constantize) ? builder.constantize : builder > end > > So if you set default_form_builder to be a "AppFormBuilder" then that > should allow it to be reloaded. > > >> Also, I would like to know if Rails can reload code that modify native >> Ruby classes: >> >> class String >> def do_something >> 'something' >> end >> end >> >> >> > This can't be done. code reloading is done by removing the class/module > (using remove_const) and then letting it be loaded again, which wouldn't > work for a class like String > > Fred > -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To unsubscribe from this group and stop receiving emails from it, send an email to rubyonrails-talk+unsubscr...@googlegroups.com. To post to this group, send email to rubyonrails-talk@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/rubyonrails-talk/88572db8-eb7d-4b1a-8884-b01844876091%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.