mirror of
https://github.com/jbranchaud/til
synced 2026-01-20 15:38:02 +00:00
Compare commits
3 Commits
02086e7115
...
bf04dfcca5
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
bf04dfcca5 | ||
|
|
24b1b02d52 | ||
|
|
8ef2cfdc69 |
@@ -10,7 +10,7 @@ pairing with smart people at Hashrocket.
|
|||||||
|
|
||||||
For a steady stream of TILs, [sign up for my newsletter](https://crafty-builder-6996.ck.page/e169c61186).
|
For a steady stream of TILs, [sign up for my newsletter](https://crafty-builder-6996.ck.page/e169c61186).
|
||||||
|
|
||||||
_1455 TILs and counting..._
|
_1458 TILs and counting..._
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -899,6 +899,7 @@ _1455 TILs and counting..._
|
|||||||
- [Custom Validation Message](rails/custom-validation-message.md)
|
- [Custom Validation Message](rails/custom-validation-message.md)
|
||||||
- [Customize Paths And Helpers For Devise Routes](rails/customize-paths-and-helpers-for-devise-routes.md)
|
- [Customize Paths And Helpers For Devise Routes](rails/customize-paths-and-helpers-for-devise-routes.md)
|
||||||
- [Customize The Path Of A Resource Route](rails/customize-the-path-of-a-resource-route.md)
|
- [Customize The Path Of A Resource Route](rails/customize-the-path-of-a-resource-route.md)
|
||||||
|
- [Define The Root Path For The App](rails/define-the-root-path-for-the-app.md)
|
||||||
- [Delete Paranoid Records](rails/delete-paranoid-records.md)
|
- [Delete Paranoid Records](rails/delete-paranoid-records.md)
|
||||||
- [Demodulize A Class Name](rails/demodulize-a-class-name.md)
|
- [Demodulize A Class Name](rails/demodulize-a-class-name.md)
|
||||||
- [Different Ways To Add A Foreign Key Reference](rails/different-ways-to-add-a-foreign-key-reference.md)
|
- [Different Ways To Add A Foreign Key Reference](rails/different-ways-to-add-a-foreign-key-reference.md)
|
||||||
@@ -964,6 +965,7 @@ _1455 TILs and counting..._
|
|||||||
- [Rescue From With A Separate Method](rails/rescue-from-with-a-separate-method.md)
|
- [Rescue From With A Separate Method](rails/rescue-from-with-a-separate-method.md)
|
||||||
- [Respond With JSON Regardless of Content Type](rails/respond-with-json-regardless-of-content-type.md)
|
- [Respond With JSON Regardless of Content Type](rails/respond-with-json-regardless-of-content-type.md)
|
||||||
- [Retrieve An Object If It Exists](rails/retrieve-an-object-if-it-exists.md)
|
- [Retrieve An Object If It Exists](rails/retrieve-an-object-if-it-exists.md)
|
||||||
|
- [Rollback A Couple Migrations](rails/rollback-a-couple-migrations.md)
|
||||||
- [Rollback A Specific Migration Out Of Order](rails/rollback-a-specific-migration-out-of-order.md)
|
- [Rollback A Specific Migration Out Of Order](rails/rollback-a-specific-migration-out-of-order.md)
|
||||||
- [Rounding Numbers With Precision](rails/rounding-numbers-with-precision.md)
|
- [Rounding Numbers With Precision](rails/rounding-numbers-with-precision.md)
|
||||||
- [Run A Rake Task Programmatically](rails/run-a-rake-task-programmatically.md)
|
- [Run A Rake Task Programmatically](rails/run-a-rake-task-programmatically.md)
|
||||||
@@ -1212,6 +1214,7 @@ _1455 TILs and counting..._
|
|||||||
- [Pattern Match Values From A Hash](ruby/pattern-match-values-from-a-hash.md)
|
- [Pattern Match Values From A Hash](ruby/pattern-match-values-from-a-hash.md)
|
||||||
- [Percent Notation](ruby/percent-notation.md)
|
- [Percent Notation](ruby/percent-notation.md)
|
||||||
- [Precedence Of Logical Operators](ruby/precedence-of-logical-operators.md)
|
- [Precedence Of Logical Operators](ruby/precedence-of-logical-operators.md)
|
||||||
|
- [Prevent erb_lint From Removing Opening Tags](ruby/prevent-erb-lint-from-removing-opening-tags.md)
|
||||||
- [Print Data To Formatted Table](ruby/print-data-to-formatted-table.md)
|
- [Print Data To Formatted Table](ruby/print-data-to-formatted-table.md)
|
||||||
- [Question Mark Operator](ruby/question-mark-operator.md)
|
- [Question Mark Operator](ruby/question-mark-operator.md)
|
||||||
- [Rake Only Lists Tasks With Descriptions](ruby/rake-only-lists-tasks-with-descriptions.md)
|
- [Rake Only Lists Tasks With Descriptions](ruby/rake-only-lists-tasks-with-descriptions.md)
|
||||||
|
|||||||
37
rails/define-the-root-path-for-the-app.md
Normal file
37
rails/define-the-root-path-for-the-app.md
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
# Define The Root Path For The App
|
||||||
|
|
||||||
|
The `root_path` helper that you might want to use in Rails controllers and
|
||||||
|
views is not available by default.
|
||||||
|
|
||||||
|
```ruby
|
||||||
|
> Rails.application.routes.url_helpers.root_path
|
||||||
|
|
||||||
|
ruby/3.2.2/lib/ruby/gems/3.2.0/gems/irb-1.14.0/lib/irb.rb:1285:in `full_message': undefined method `root_path' for #<Module:0x0000000106d11738> (NoMethodError)
|
||||||
|
|
||||||
|
Rails.application.routes.url_helpers.root_path
|
||||||
|
^^^^^^^^^^
|
||||||
|
Did you mean? logout_path
|
||||||
|
book_path
|
||||||
|
```
|
||||||
|
|
||||||
|
It needs to be declared in the `config/routes.rb` file with the controller
|
||||||
|
action that it points to.
|
||||||
|
|
||||||
|
```ruby
|
||||||
|
# config/routes.rb
|
||||||
|
Rails.application.routes.draw do
|
||||||
|
root 'home#index'
|
||||||
|
end
|
||||||
|
```
|
||||||
|
|
||||||
|
Once this is defined the `root_path` will now be available with the rest of
|
||||||
|
your URL helpers.
|
||||||
|
|
||||||
|
```ruby
|
||||||
|
better-reads(dev)> reload!
|
||||||
|
Reloading...
|
||||||
|
better-reads(dev)> Rails.application.routes.url_helpers.root_path
|
||||||
|
=> "/"
|
||||||
|
```
|
||||||
|
|
||||||
|
[source](https://guides.rubyonrails.org/routing.html#using-root)
|
||||||
25
rails/rollback-a-couple-migrations.md
Normal file
25
rails/rollback-a-couple-migrations.md
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
# Rollback A Couple Migrations
|
||||||
|
|
||||||
|
Let's say we need to rollback a couple Rails migrations that have been applied
|
||||||
|
to our local environment. We run `rails db:migrate:status` and see that there
|
||||||
|
are _2_ migrations that we want to _undo_.
|
||||||
|
|
||||||
|
We can accomplish this by using the `STEP` env var with the rollback command.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ rails db:rollback STEP=2
|
||||||
|
```
|
||||||
|
|
||||||
|
Just set `STEP` to the number of migrations that we need to rollback. If we
|
||||||
|
then rerun `rails db:migrate:status` we'll now see those latest two migrations
|
||||||
|
are `down`.
|
||||||
|
|
||||||
|
Note: by default Rails doesn't like to operate with pending migrations. If we
|
||||||
|
want to temporarily disable the pending migration check, we can alter the
|
||||||
|
migration error config in `config/development.rb`.
|
||||||
|
|
||||||
|
```diff
|
||||||
|
# Raise an error on page load if there are pending migrations.
|
||||||
|
- # config.active_record.migration_error = :page_load
|
||||||
|
+ config.active_record.migration_error = false
|
||||||
|
```
|
||||||
45
ruby/prevent-erb-lint-from-removing-opening-tags.md
Normal file
45
ruby/prevent-erb-lint-from-removing-opening-tags.md
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
# Prevent erb_lint From Removing Opening Tags
|
||||||
|
|
||||||
|
The [`erb_lint` gem](https://github.com/Shopify/erb_lint) is a tool from
|
||||||
|
shopify for linting and auto-formatting ERB files. When I first set it up in a
|
||||||
|
Rails codebase with the base `.erb-lint.yml` recommended in the README, I ran
|
||||||
|
into a pernicious issue. The linter wanted to remove opening tags (i.e. `<%`
|
||||||
|
and `<%=`) from my ERB files.
|
||||||
|
|
||||||
|
So, for a file that looked like this:
|
||||||
|
|
||||||
|
```erb
|
||||||
|
<div>
|
||||||
|
<%= form_with(url: login_path, scope: :session) do |f| %>
|
||||||
|
<div>
|
||||||
|
<%= f.label :email %>
|
||||||
|
<%= f.email_field :email %>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
```
|
||||||
|
|
||||||
|
It would get formatted to this:
|
||||||
|
|
||||||
|
```erb
|
||||||
|
<div>
|
||||||
|
form_with(url: login_path, scope: :session) do |f| %>
|
||||||
|
<div>
|
||||||
|
f.label :email %>
|
||||||
|
f.email_field :email %>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
```
|
||||||
|
|
||||||
|
Yikes!
|
||||||
|
|
||||||
|
I had to disable a couple rules (under `rubocop_config:`) in the `.erb-lint.yml` file to get it to stop
|
||||||
|
doing this.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
Layout/InitialIndentation:
|
||||||
|
Enabled: false
|
||||||
|
Layout/TrailingEmptyLines:
|
||||||
|
Enabled: false
|
||||||
|
```
|
||||||
|
|
||||||
|
[source](https://github.com/Shopify/erb_lint/issues/222)
|
||||||
Reference in New Issue
Block a user