rails_nexus 2.1.0 → 2.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +110 -0
- data/README.md +33 -6
- data/SECURITY.md +11 -0
- data/THIRD_PARTY_NOTICES.md +14 -0
- data/app/assets/config/rails_nexus_manifest.js +1 -1
- data/app/assets/javascripts/rails_nexus/application.js +55 -0
- data/app/controllers/rails_nexus/analytics_controller.rb +13 -26
- data/app/controllers/rails_nexus/application_controller.rb +6 -2
- data/app/controllers/rails_nexus/backup_controller.rb +1 -2
- data/app/controllers/rails_nexus/cron_jobs_controller.rb +1 -9
- data/app/controllers/rails_nexus/database_health_controller.rb +0 -10
- data/app/controllers/rails_nexus/logged_exceptions_controller.rb +0 -2
- data/app/controllers/rails_nexus/n1_patterns_controller.rb +0 -2
- data/app/controllers/rails_nexus/settings_controller.rb +1 -39
- data/app/controllers/rails_nexus/source_code_controller.rb +9 -13
- data/app/controllers/rails_nexus/stats_controller.rb +43 -43
- data/app/helpers/rails_nexus/logged_exceptions_helper.rb +4 -49
- data/app/helpers/rails_nexus/source_code_helper.rb +49 -10
- data/app/javascript/rails_nexus/application.js +15 -3
- data/app/models/rails_nexus/backup_config.rb +31 -0
- data/app/models/rails_nexus/logged_exception.rb +27 -13
- data/app/services/rails_nexus/backup_service.rb +233 -98
- data/app/views/layouts/rails_nexus/application.html.erb +1 -1
- data/app/views/rails_nexus/stats/index.html.erb +1 -1
- data/lib/generators/rails_nexus/install_generator.rb +1 -1
- data/lib/generators/rails_nexus/templates/INSTALL.md +1 -0
- data/lib/generators/rails_nexus/templates/rails_nexus.rb +3 -0
- data/lib/generators/rails_nexus/templates/views/layouts/rails_nexus/application.html.erb +1 -1
- data/lib/rails_nexus/configuration.rb +10 -0
- data/lib/rails_nexus/database_adapter.rb +53 -0
- data/lib/rails_nexus/engine.rb +0 -13
- data/lib/rails_nexus/logger.rb +1 -12
- data/lib/rails_nexus/notifications.rb +27 -20
- data/lib/rails_nexus/version.rb +1 -1
- data/lib/rails_nexus/webhook_client.rb +151 -0
- data/lib/rails_nexus.rb +37 -23
- data/rails_nexus.gemspec +3 -2
- metadata +8 -16
- data/config/importmap.rb +0 -15
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: b0d4fb3a131d01ac778f166aff0bdda1c0247293e7f6ce7441b477fc9dbd47b8
|
|
4
|
+
data.tar.gz: 073effb7c2dbd08a49ef1ea2d534c9ccf422d0f509c79138f15616e8510c2969
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 25ca7d4c31b7c5762aaf4c606f8f3c9b16a24ca2be69176cc8b1ad31578fcf697b71d5d2bdbcab2827e22b2f5103f9300be9c6417d73d86d28d5269fbc018e93
|
|
7
|
+
data.tar.gz: 7e10dfb542e5f6a0a69d559c878bd3cbf024e409e7d703c2c5d5a24516ae37572a5c8b9795a14a41c41bef67109408b6688775300b7cd19df3a2528ac165aac5
|
data/CHANGELOG.md
ADDED
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to RailsNexus will be documented in this file.
|
|
4
|
+
|
|
5
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
|
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
|
+
|
|
8
|
+
## [2.1.1] - 2026-08-23
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
- **Security controls** — Global fail-closed dashboard authorization, webhook destination policy controls, safe source browsing, and recursive sensitive-parameter filtering.
|
|
12
|
+
- **Database compatibility CI** — SQLite, PostgreSQL, and MySQL/MariaDB coverage plus Ruby 3.2–4.0 and Rails 8.0–8.1 test matrices.
|
|
13
|
+
- **Release security** — Private vulnerability reporting guidance, dependency updates, static analysis, dependency auditing, and MFA release metadata.
|
|
14
|
+
- **Advanced exception filtering** — Ransack filters now cover exception type, source, message/class/source search, platform, priority, workflow status, assignee, time range, and minimum occurrence count.
|
|
15
|
+
- **Sortable exception table** — Exception, platform, source, message, occurrence count, workflow priority, and last-seen columns can be sorted without leaving the Turbo Frame.
|
|
16
|
+
|
|
17
|
+
### Changed
|
|
18
|
+
- **Exception boundary** — New installations capture `StandardError` while fatal process and VM exceptions retain normal Ruby/Rails behavior.
|
|
19
|
+
- **Frontend distribution** — RailsNexus now ships a fingerprintable prebuilt bundle and no longer requires or modifies Importmap.
|
|
20
|
+
- **Portable analytics** — Time grouping is bounded and isolated for SQLite, PostgreSQL, and MySQL/MariaDB.
|
|
21
|
+
- **Pagy pagination** — Replaced WillPaginate with Pagy for exception and cron-job pagination.
|
|
22
|
+
- **Compact exception table** — The message column is constrained and ellipsized with the complete message available as a tooltip; source, fingerprint, workflow, assignment, and occurrence metadata are presented in a denser layout.
|
|
23
|
+
- **Occurrence performance** — The exception table uses each fingerprint's stored `occurrence_count`, removing the per-row count query.
|
|
24
|
+
|
|
25
|
+
### Fixed
|
|
26
|
+
- **Backup process safety** — External backup tools receive validated argument arrays and secrets through protected environment/configuration channels.
|
|
27
|
+
- **Webhook request safety** — Webhook delivery validates schemes, DNS results, network ranges, redirects, and host policy before connecting.
|
|
28
|
+
- **Source viewer safety** — Canonical path containment and non-shell Git execution prevent path and command injection.
|
|
29
|
+
- **Legacy namespace boot compatibility** — Applications that still include `RailsOps::ExceptionLoggable` can boot while migrating to `RailsNexus::ExceptionLoggable`.
|
|
30
|
+
- **Unified exception query** — Legacy and Ransack filters now compose in one relation, platform filtering works independently of source filtering, and filtered bulk deletion deletes the same result set shown in the table.
|
|
31
|
+
- **Filter pills** — Removing a Ransack filter pill now correctly removes its nested `q` parameter.
|
|
32
|
+
- **Zero-config engine assets** — The engine registers its prebuilt JavaScript and CSS assets without depending on the host's application entry point or assets.
|
|
33
|
+
- **Local Hotwire assets** — Turbo and Stimulus are served from their Rails gems instead of third-party CDN URLs, improving CSP compatibility and offline deployment.
|
|
34
|
+
- **Host entry-point isolation** — RailsNexus no longer adds pins or imports to the host application's JavaScript setup.
|
|
35
|
+
|
|
36
|
+
## [1.1.0] - 2026-08-22
|
|
37
|
+
|
|
38
|
+
### Added
|
|
39
|
+
- **Exception cause chains** — Automatically captures the full exception chain (`exception.cause`) up to 10 levels deep. New "Cause Chain" tab in the detail view shows each exception with its message and backtrace snippet.
|
|
40
|
+
- **Breadcrumbs (activity trail)** — Subscribes to ActiveSupport::Notifications to capture SQL queries, controller actions, cache reads/writes, job executions, mailer deliveries, and partial renders before a crash. Thread-local ring buffer (50 entries) flushed on exception. Enable with `config.breadcrumbs_enabled = true`.
|
|
41
|
+
- **Storm protection (circuit breaker)** — Prevents error floods from crashing the app with DB writes. Per-process threshold (default: 50 errors/sec), auto-opens circuit when exceeded, sheds 90% of errors, auto-resets after cooldown. Enable with `config.storm_protection_enabled = true`.
|
|
42
|
+
- **User impact scoring** — Tracks `user_id` on each exception and ranks errors by unique users affected (not occurrence count). User Impact table on the dashboard shows top 5 errors. Enable with `config.user_impact_tracking = true`.
|
|
43
|
+
- **System health snapshots** — Captures GC stats, memory (RSS/VSZ), thread count, DB connection pool utilization, and Ruby version at the moment of each exception. New "System Health" tab in detail view.
|
|
44
|
+
- **Exception fingerprinting** — Generates SHA256 fingerprints for grouping similar exceptions. Duplicate exceptions increment an `occurrence_count` instead of creating new rows.
|
|
45
|
+
- **Database health summary** — Live database stats on the Statistics page: adapter, version, ping latency, active connections, pool size, uptime, and per-table row counts.
|
|
46
|
+
- **Backup status detection** — Detects the `backup` gem and shows config path, model files, backup directory stats, last backup time, storage destination, database adapters, notifiers, and crontab scheduling.
|
|
47
|
+
- **Server statistics dashboard** — New `/rails_nexus/stats` page with memory, CPU, disk, Ruby/Rails info, Sidekiq stats, process info, and exception trend charts.
|
|
48
|
+
- **Cron job monitoring** — New `RailsNexus::CronJob` model and `/rails_nexus/cron_jobs` page to track scheduled task runs with status, duration, hostname, and error details. Rake tasks: `rails_nexus:wrap_cron`, `rails_nexus:cron_stats`, `rails_nexus:cron_cleanup`.
|
|
49
|
+
- **Webhook configuration UI** — New `/rails_nexus/settings` page to view configured webhooks, send test payloads, and see delivery history with status codes and timing.
|
|
50
|
+
- **Webhook delivery logging** — Every webhook attempt (success or failure) logged to `RailsNexus::WebhookDelivery` with request/response body, status code, duration, and error message.
|
|
51
|
+
- **New migration templates** — `migration_cron_jobs.rb`, `migration_webhook_deliveries.rb`, and `migration_advanced_features.rb` for the new columns and tables.
|
|
52
|
+
- **New configuration options** — `breadcrumbs_enabled`, `storm_protection_enabled`, `storm_threshold_per_second`, `storm_cooldown_seconds`, `user_impact_tracking`, `show_server_stats`, `cron_job_tracking`, `log_webhook_deliveries`, and more.
|
|
53
|
+
|
|
54
|
+
### Changed
|
|
55
|
+
- **Sidebar navigation** — Added Statistics, Cron Jobs, and Settings links to the dashboard sidebar.
|
|
56
|
+
- **Exception detail view** — New tabs for Cause Chain, Breadcrumbs, and System Health alongside existing Overview, Backtrace, Request, Environment, and User Info tabs.
|
|
57
|
+
- **Exception index view** — User Impact ranking table displayed above filters when data is available.
|
|
58
|
+
- **Stats controller** — Now collects system, Ruby, Sidekiq, database, backup, and storm protection stats.
|
|
59
|
+
|
|
60
|
+
## [1.0.1] - 2026-08-22
|
|
61
|
+
|
|
62
|
+
### Added
|
|
63
|
+
- **Tailwind-like utility classes** — Embedded utility CSS (display, flexbox, spacing, typography, colors, animations, responsive breakpoints) so the dashboard works with or without Tailwind CSS.
|
|
64
|
+
- **Standard Stimulus controller locations** — Moved controllers to `app/javascript/controllers/` (Stimulus's default scan path) so `bin/rails stimulus:manifest:update` registers them automatically without extra configuration.
|
|
65
|
+
- **Dark mode auto-detection** — Theme controller now respects `prefers-color-scheme` media query for the `auto` theme setting, in addition to localStorage persistence.
|
|
66
|
+
- **Generator template updates** — `rails_nexus:customize` now generates sidebar and theme controller templates in the standard Stimulus location with localStorage-backed theme persistence.
|
|
67
|
+
|
|
68
|
+
### Fixed
|
|
69
|
+
- **Theme controller localStorage persistence** — The engine's theme controller previously ignored the user's saved preference and always overwrote localStorage with the server-side default on every page load. Now it checks localStorage first, falls back to the server config, and respects system color-scheme preference.
|
|
70
|
+
|
|
71
|
+
### Changed
|
|
72
|
+
- **Version bumped to 1.0.1** — Indicates the Tailwind/Hotwire modernization milestone.
|
|
73
|
+
- **Removed legacy Sprockets JS** — Deleted `app/assets/javascripts/rails_nexus/application.js` (the old vanilla Stimulus registration shim) since controllers now live in the standard importmap/esbuild path.
|
|
74
|
+
- **Removed unused legacy image directory** — Cleaned up an unused image placeholder.
|
|
75
|
+
- **Removed old `rails_nexus/controllers/` directory** — Sidebar and theme controllers moved from `app/javascript/rails_nexus/controllers/` to `app/javascript/controllers/`.
|
|
76
|
+
- **Customize generator updated** — Output paths and post-install instructions reflect the new controller locations.
|
|
77
|
+
- **CSS file restructured** — Utility classes are now at the top of the stylesheet above the legacy `rn-*` component styles for clearer layering.
|
|
78
|
+
|
|
79
|
+
## [0.2.0] - 2026-08-21
|
|
80
|
+
|
|
81
|
+
### Added
|
|
82
|
+
- **Install generator** — `bin/rails generate rails_nexus:install` sets up routes, migration, and initializer in one command.
|
|
83
|
+
- **Configuration DSL** — `RailsNexus.configure` block for auth, app name, per-page, and exception data.
|
|
84
|
+
- **Auth by default** — `auth_block` configuration prevents unauthenticated access. Dashboard returns 403 when no auth is configured.
|
|
85
|
+
- **Self-contained CSS** — Dashboard works without Tailwind CSS. Custom stylesheets are engine-provided.
|
|
86
|
+
- **Database indexes** — Added indexes on `created_at`, `exception_class`, and `[controller_name, action_name]` for faster queries.
|
|
87
|
+
- **Backward compatibility** — Legacy `ExceptionLoggable` class attributes still work alongside the new configuration DSL.
|
|
88
|
+
|
|
89
|
+
### Fixed
|
|
90
|
+
- **Message formatting** — Exception messages are no longer nil when no extra data is attached.
|
|
91
|
+
- **Removed stray `.gem` files** from the repository.
|
|
92
|
+
|
|
93
|
+
### Changed
|
|
94
|
+
- Views use engine-scoped CSS classes instead of Tailwind utility classes.
|
|
95
|
+
- Layout no longer depends on host application assets.
|
|
96
|
+
|
|
97
|
+
## [0.1.1] - 2026-08-20
|
|
98
|
+
|
|
99
|
+
### Added
|
|
100
|
+
- `rails_nexus:tailwind:sources` rake task for Tailwind v4 source discovery.
|
|
101
|
+
|
|
102
|
+
## [0.1.0] - 2024-03-30
|
|
103
|
+
|
|
104
|
+
### Added
|
|
105
|
+
- Initial release.
|
|
106
|
+
- Exception logging via `RailsNexus::ExceptionLoggable`.
|
|
107
|
+
- Dashboard with filtering, search, pagination.
|
|
108
|
+
- Turbo Frames and Streams for SPA-like UX.
|
|
109
|
+
- RSS feed.
|
|
110
|
+
- Turbo Stream-based delete operations.
|
data/README.md
CHANGED
|
@@ -85,7 +85,7 @@ RailsNexus is an extensible operations and administration console for Rails appl
|
|
|
85
85
|
|
|
86
86
|
- Ruby 3.2 or newer
|
|
87
87
|
- Rails 8.0 or newer
|
|
88
|
-
-
|
|
88
|
+
- SQLite 3, PostgreSQL, or MySQL/MariaDB
|
|
89
89
|
|
|
90
90
|
## Installation
|
|
91
91
|
|
|
@@ -108,7 +108,7 @@ This will:
|
|
|
108
108
|
1. Copy the database migration with proper indexes.
|
|
109
109
|
2. Create a configuration initializer at `config/initializers/rails_nexus.rb`.
|
|
110
110
|
3. Mount the engine in your routes.
|
|
111
|
-
4. Add `rescue_from
|
|
111
|
+
4. Add `rescue_from StandardError, with: :log_exception_handler` to `ApplicationController`.
|
|
112
112
|
|
|
113
113
|
The dashboard is now available at `/rails_nexus`.
|
|
114
114
|
|
|
@@ -151,6 +151,10 @@ class Api::V1::BaseController < ActionController::API
|
|
|
151
151
|
end
|
|
152
152
|
```
|
|
153
153
|
|
|
154
|
+
Older applications using `RailsOps::ExceptionLoggable` remain supported for
|
|
155
|
+
boot compatibility. Update them to `RailsNexus::ExceptionLoggable` when
|
|
156
|
+
convenient.
|
|
157
|
+
|
|
154
158
|
### Background jobs (Sidekiq)
|
|
155
159
|
|
|
156
160
|
RailsNexus automatically logs Sidekiq job exceptions when the middleware is configured:
|
|
@@ -168,7 +172,10 @@ end
|
|
|
168
172
|
|
|
169
173
|
The dashboard contains sensitive information. **Do not expose it to unauthenticated users.**
|
|
170
174
|
|
|
171
|
-
|
|
175
|
+
Authentication is applied globally by `RailsNexus::ApplicationController`,
|
|
176
|
+
including workflow mutations and source-code viewing. If `auth_block` is
|
|
177
|
+
missing, returns `false`/`nil`, or raises an error, every dashboard request
|
|
178
|
+
returns `403 Forbidden`. Configure authentication:
|
|
172
179
|
|
|
173
180
|
```ruby
|
|
174
181
|
# config/initializers/rails_nexus.rb
|
|
@@ -294,8 +301,18 @@ config.webhooks = [
|
|
|
294
301
|
]
|
|
295
302
|
config.webhook_timeout = 5
|
|
296
303
|
config.webhook_headers = { "Authorization" => "Bearer token" }
|
|
304
|
+
config.webhook_allowed_hosts = ["hooks.slack.com", "*.example.com"] # optional
|
|
305
|
+
config.webhook_denied_hosts = ["blocked.example.com"]
|
|
306
|
+
# HTTP is only available in development, and only with this explicit opt-in:
|
|
307
|
+
config.webhook_allow_http_in_development = false
|
|
297
308
|
```
|
|
298
309
|
|
|
310
|
+
Webhook destinations must use HTTPS, cannot contain URL credentials, and are
|
|
311
|
+
resolved and pinned to a validated public IP before connecting. Private,
|
|
312
|
+
loopback, link-local, metadata, multicast, unspecified, reserved, and redirect
|
|
313
|
+
destinations are rejected. Logged delivery URLs redact their path and query so
|
|
314
|
+
provider tokens are not persisted.
|
|
315
|
+
|
|
299
316
|
POST JSON to each URL on every new exception:
|
|
300
317
|
```json
|
|
301
318
|
{
|
|
@@ -347,7 +364,7 @@ rake rails_nexus:test_webhook # Test webhook configuration
|
|
|
347
364
|
|
|
348
365
|
### Hotwire (default)
|
|
349
366
|
|
|
350
|
-
RailsNexus
|
|
367
|
+
RailsNexus ships a prebuilt JavaScript asset containing Turbo and its namespaced Stimulus controllers. It does not require `importmap-rails`, does not modify the host JavaScript entry point, and works in hosts using Importmap, jsbundling/esbuild/Bun, or no JavaScript bundler. The bundle reuses a host Stimulus application exposed as `window.Stimulus`; otherwise it starts one engine-scoped application and reuses it across repeated loads.
|
|
351
368
|
|
|
352
369
|
### Styling
|
|
353
370
|
|
|
@@ -365,7 +382,7 @@ If your app uses Tailwind, add the gem's views as a source:
|
|
|
365
382
|
|
|
366
383
|
#### Asset pipelines
|
|
367
384
|
|
|
368
|
-
The engine registers its JavaScript
|
|
385
|
+
The engine registers and precompiles its fingerprintable JavaScript and CSS assets automatically. Both Propshaft and Sprockets hosts can mount RailsNexus without changing the host asset manifest.
|
|
369
386
|
|
|
370
387
|
The entry point is `rails_nexus/application`; it does not replace or depend on the host app's `application` entry point. Turbo and Stimulus are served locally from their Rails gems rather than from a CDN.
|
|
371
388
|
|
|
@@ -384,7 +401,17 @@ Four controllers are included and registered by the engine's entry point:
|
|
|
384
401
|
|
|
385
402
|
The engine creates a `rails_nexus_exceptions` table with columns for exception class, controller/action, message, backtrace, request, environment, user information, user agent, remote IP, and timestamps.
|
|
386
403
|
|
|
387
|
-
|
|
404
|
+
RailsNexus applies Rails' configured parameter filters plus built-in password, token, authorization, cookie, session, and secret filters before persistence. Application-provided free-form messages can still contain sensitive data, so apply your normal database encryption, retention, backup, and access-control policies.
|
|
405
|
+
|
|
406
|
+
Analytics time grouping works on SQLite, PostgreSQL, and MySQL/MariaDB. Row counts work on all three; physical table-size and server uptime/connection metrics are displayed only where the adapter exposes them safely, and otherwise show as unavailable.
|
|
407
|
+
|
|
408
|
+
## Backup safety and compatibility
|
|
409
|
+
|
|
410
|
+
Backup commands are executed without a shell and validate database identifiers, ports, hosts, paths, remote destinations, and MySQL options. Database and encryption passwords are passed through protected environment variables or mode-`0600` temporary files rather than command-line arguments. Free-form notification shell commands are intentionally unsupported; configure a direct executable and arguments instead.
|
|
411
|
+
|
|
412
|
+
## Security
|
|
413
|
+
|
|
414
|
+
The dashboard denies every request unless `auth_block` returns a truthy value. Webhooks use HTTPS by default, resolve and pin public destinations, reject redirects and private/reserved networks, and support explicit host allow/deny lists. See [SECURITY.md](SECURITY.md) for private vulnerability reporting.
|
|
388
415
|
|
|
389
416
|
## Generators
|
|
390
417
|
|
data/SECURITY.md
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# Security Policy
|
|
2
|
+
|
|
3
|
+
## Supported versions
|
|
4
|
+
|
|
5
|
+
Security fixes are provided for the latest released RailsNexus minor version. Users should upgrade to the newest patch release before reporting an issue.
|
|
6
|
+
|
|
7
|
+
## Reporting a vulnerability
|
|
8
|
+
|
|
9
|
+
Please do not open a public issue for a suspected vulnerability. Use GitHub's private security advisory form at `https://github.com/tamiru/rails_nexus/security/advisories/new`, or email `tamiruhailu@gmail.com` if the form is unavailable.
|
|
10
|
+
|
|
11
|
+
Include the affected version, impact, reproduction steps, and any suggested mitigation. You can expect an acknowledgement within seven days. Details will remain private until a fix and coordinated disclosure are ready.
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# Third-Party Notices
|
|
2
|
+
|
|
3
|
+
The prebuilt `rails_nexus/application.js` asset contains Turbo and Stimulus.
|
|
4
|
+
|
|
5
|
+
- Turbo: Copyright (c) 2020 Basecamp
|
|
6
|
+
- Stimulus: Copyright (c) 2021 Basecamp
|
|
7
|
+
|
|
8
|
+
Both are distributed under the MIT License:
|
|
9
|
+
|
|
10
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
|
13
|
+
|
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
//= link_directory ../stylesheets/rails_nexus .css
|
|
2
|
-
//=
|
|
2
|
+
//= link rails_nexus/application.js
|