ActiveRecord уже имеет его:
gem install i18n activesupport-inflector
тогда
require 'active_support/inflector'
"myHTMLComponent".underscore.dasherize
# => "my-html-component"
Вы можете увидеть реализацию здесь (с acronym_underscore_regex
здесь ).
Если вы не хотите беспокоиться о угловых случаях, таких как аббревиатуры, этого должно быть достаточно:
"myCamelCase".gsub(/[[:upper:]]/) { "-#{$&.downcase}" }
# => "my-camel-case"