Routing-filter e rails

Ciao lista,

sto utilizzando all’interno di un progetto rails routing-filter
(GitHub - svenfuchs/routing-filter: routing-filter wraps around the complex beast that the Rails routing system is, allowing for unseen flexibility and power in Rails URL recognition and generation.)
Sito multi lingua che utilizza high_voltage.
Rail mi generava degli orribili “?locale=en”

Ho configurato le mie rotte secondo questo modello:

filter :locale, :exclude => /^/admin/
scope “/(:locale)”, :locale => /it|fr/ do

resources :varie
resources :eventuali

match “#{HighVoltage::content_path}*id” => ‘high_voltage/pages#show’,
:as => :page
end

in questo modo ottengo rotte corrette ma quando la url viene generata
da qualcosa come resource_path sono dolori:
/it/miapagina (quando utilizzo HighVoltage)
/it/it/varie (quando utilizzo un path generato da una mia risorsa)

di fatto c’ una sovrapposizione tra quello che fa routing-filter e
quello che rails fa di default quando vede che c’ un locale e lo
inserisce nella url.
Con exclude posso evitare /admin e va bene ma per il restante delle
risorse diventa troppo noioso.

Ho trovato due strade e mi fanno schifo tutte e due:

  • RoutingFilter.active = false spengo l’url rewrite in toto. Nelle
    poche pagine HighVoltage faccio a mano
  • dentro la gemma RoutingFilter ho inserito una cosa di questo tipo:


prepend_segment!(result, locale) if prepend_locale?(locale,url) &&
!excluded?(url) # <— AGGIUNTO url come parametro passato a
prepend_locale?

def prepend_locale?(locale,url)
locale && (self.class.include_default_locale? ||
!default_locale?(locale) ) && !url.include?(locale.to_s) # <—
AGGIUNTO l’ultimo include?
end

Qualcuno ha suggerimenti in merito?
grazie Lorenzo