
Security News
New Website “Is It Really FOSS?” Tracks Transparency in Open Source Distribution Models
A new site reviews software projects to reveal if they’re truly FOSS, making complex licensing and distribution models easy to understand.
Generate a ES6 module that contains Rails routes.
This gem provides "js:routes" rake task. It generates a ES6 requirable module which exports url helper functions defined in your Rails application.
Suppose the app has following routes:
# == Route Map
#
# Prefix Verb URI Pattern Controller#Action
# articles GET /articles(.:format) articles#index
# POST /articles(.:format) articles#create
# new_article GET /articles/new(.:format) articles#new
# edit_article GET /articles/:id/edit(.:format) articles#edit
# article GET /articles/:id(.:format) articles#show
# PATCH /articles/:id(.:format) articles#update
# PUT /articles/:id(.:format) articles#update
# DELETE /articles/:id(.:format) articles#destroy
Rails.application.routes.draw do
resources :articles
end
then rake js:routes
generates "app/assets/javascripts/rails-routes.js" as:
// Don't edit manually. `rake js:routes` generates this file.
function process(route, params, keys) {
var query = [];
for (var param in params) if (Object.prototype.hasOwnProperty.call(params, param)) {
if (keys.indexOf(param) === -1) {
query.push(param + "=" + encodeURIComponent(params[param]));
}
}
return query.length ? route + "?" + query.join("&") : route;
}
export function article_path(params) { return process('/articles/' + params.id + '', params, ['id']); }
export function articles_path(params) { return process('/articles', params, []); }
export function edit_article_path(params) { return process('/articles/' + params.id + '/edit', params, ['id']); }
export function new_article_path(params) { return process('/articles/new', params, []); }
railsware/js-routes spreads url helpers via global variable.
This gem uses ES6 modules.
Generate routes file.
rake js:routes
JSRailsRoutes supports several parameters:
Name | Type | Description | Default |
---|---|---|---|
include_paths | Regexp | Paths match to the regexp are included | /.*/ |
exclude_paths | Regexp | Paths match to the regexp are excluded | /^$/ |
include_names | Regexp | Names match to the regexp are included | /.*/ |
exclude_names | Regexp | Names match to the regexp are excluded | /^$/ |
exclude_engines | Regexp | Rails engines match to the regexp are excluded | /^$/ |
output_dir | String | Output JS file into the specified directory | Rails.root.join("app", "assets", "javascripts") |
camelize | Symbol | Output JS file with chosen camelcase type it also avaliable for :lower and :upper | nil |
target | String | Target type. "js" or "ts" | "js" |
route_filter | Proc | Fully customizable filter on JSRails::Route | ->(route) { true } |
route_set_filter | Proc | Fully customizable filter on JSRails::RouteSet | ->(route_set) { true } |
You can configure via JSRailsRoutes.configure
.
# Rakefile
JSRailsRoutes.configure do |c|
c.exclude_paths = %r{^/(rails|sidekiq)}
c.output_dir = Rails.root.join('client/javascripts')
end
Now rake js:routes
ignores paths starting with "/rails" or "/sidekiq".
You can override the coniguration via command line parameters:
rake js:routes exclude_paths='^/rails'
The command still ignores "/rails" but includes "/sidekiq".
You can rename route in route_filter
:
# Rakefile
JSRailsRoutes.configure do |c|
c.route_filter = -> (route) do
# Remove common prefix if route's name starts with it.
route.name = route.name[4..-1] if route.name.start_with?('foo_')
true
end
end
Your Rails Gemfile:
gem 'js_rails_routes', group: :development
FAQs
Unknown package
We found that js_rails_routes demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
A new site reviews software projects to reveal if they’re truly FOSS, making complex licensing and distribution models easy to understand.
Security News
Astral unveils pyx, a Python-native package registry in beta, designed to speed installs, enhance security, and integrate deeply with uv.
Security News
The Latio podcast explores how static and runtime reachability help teams prioritize exploitable vulnerabilities and streamline AppSec workflows.