Rails: How do I require NumberHelper and make it work?
actionpack, ruby, sinatra
Solution
So, after doing a bit of research, I found the following pull request on the master branch of Rails
https://github.com/rails/rails/pull/6315
It pretty much aims to move `ActionView::Helpers::NumberHelper` from `ActionView` to `ActiveSupport`
I also saw a few closed issues that aimed to fix a few problems with allowing inclusion of `NumberHelper` as standalone. This means require fixes and such. I didn't find an open issue with the `number_to_phone` but the problem roots at the fact that `ActiveSupport` adds an alias `starts_with?` to the `String` class. I'm not sure if they have caught that bug there yet or not.
In any case, with `ActionView` version `3.2.13` you can do the following
require 'action_view'
include ActionView::Helpers::NumberHelper
number_with_precision 3.1
#=> "3.100"
As for the `number_to_phone`, that will still break with the current version. I'm making a PR to fix that issue at this moment.
EDIT
As for the locale issue, it seems that if you specify a local you need to have set the right options in the `I18n` for it to work. If you don't provide a locale the defaults will look like this `{:separator=>".", :delimiter=>"", :precision=>3, :significant=>false, :strip_insignificant_zeros=>false}`, otherwise, the hash will be empty and it will cause issues. I can't seem to find any issues about it on Rails though.
Again, this was fixed on a PR on master https://github.com/carlosantoniodasilva/rails/commit/f6b71499e967e03c65d53cc890585f42f3b8aaa2
UPDATE
You can use `ActiveSupport` now to use these helpers
http://api.rubyonrails.org/classes/ActiveSupport/NumberHelper.html
Problem
I'm trying to write a simple Sinatra thingy but I need ActionView::Helpers::NumberHelper from action pack. http://api.rubyonrails.org/classes/ActionView/Helpers/NumberHelper.html The question is, how do I install and use it? ``` irb(main):001:0> require 'action_view/helpers/number_helper' irb(main):002:0> number_with_precision(1) NoMethodError: undefined method `number_with_precision' for main:Object irb(main):004:0> ActionView::Helpers::NumberHelper.number_with_precision(1) NoMethodError: undefined method `number_with_precision' for ActionView::Helpers::NumberHelper:Module ``` Why doesn't this simple step work? Moreover, if I require all the crap: ``` irb(main):001:0> require 'action_pack' irb(main):004:0> require 'action_view' irb(main):005:0> include ActionView::Helpers::NumberHelper irb(main):006:0> number_to_phone(12345) NoMethodError: undefined method `starts_with?' for "12345":String ``` How to make sense from all of this? Why does not this module work? Why doesn't it require whatever it needs? What does it need? Where is starts_with? Google is utterly silent on those questions. UPD: And now I get the following ``` number_with_precision(1, :locale => 'fr') TypeError: wrong argument type nil (expected Fixnum) ``` It seems to me that my NumberHelper is broken. This isn't a good behavior.