mirror of
https://github.com/jbranchaud/til
synced 2026-01-20 15:38:02 +00:00
Compare commits
2 Commits
ead1ba4c12
...
198e40fc01
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
198e40fc01 | ||
|
|
7212785cb3 |
@@ -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).
|
||||||
|
|
||||||
_1281 TILs and counting..._
|
_1283 TILs and counting..._
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -789,6 +789,7 @@ _1281 TILs and counting..._
|
|||||||
- [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)
|
||||||
- [Disambiguate Where In A Joined Relation](rails/disambiguate-where-in-a-joined-relation.md)
|
- [Disambiguate Where In A Joined Relation](rails/disambiguate-where-in-a-joined-relation.md)
|
||||||
|
- [Ensure A Rake Task Cannot Write Data](rails/ensure-a-rake-task-cannot-write-data.md)
|
||||||
- [Ensure Migrations Use The Latest Schema](rails/ensure-migrations-use-the-latest-schema.md)
|
- [Ensure Migrations Use The Latest Schema](rails/ensure-migrations-use-the-latest-schema.md)
|
||||||
- [Find Or Create A Record With FactoryBot](rails/find-or-create-a-record-with-factory-bot.md)
|
- [Find Or Create A Record With FactoryBot](rails/find-or-create-a-record-with-factory-bot.md)
|
||||||
- [Find Records With Multiple Associated Records](rails/find-records-with-multiple-associated-records.md)
|
- [Find Records With Multiple Associated Records](rails/find-records-with-multiple-associated-records.md)
|
||||||
@@ -1450,6 +1451,7 @@ _1281 TILs and counting..._
|
|||||||
- [Source Original vimrc When Using Neovim](vim/source-original-vimrc-when-using-neovim.md)
|
- [Source Original vimrc When Using Neovim](vim/source-original-vimrc-when-using-neovim.md)
|
||||||
- [Swap Occurrences Of Two Words](vim/swap-occurrences-of-two-words.md)
|
- [Swap Occurrences Of Two Words](vim/swap-occurrences-of-two-words.md)
|
||||||
- [Swapping Split Windows](vim/swapping-split-windows.md)
|
- [Swapping Split Windows](vim/swapping-split-windows.md)
|
||||||
|
- [Swap The Position Of Two Split Windows](vim/swap-the-position-of-two-split-windows.md)
|
||||||
- [Tabs To Spaces](vim/tabs-to-spaces.md)
|
- [Tabs To Spaces](vim/tabs-to-spaces.md)
|
||||||
- [The Vim Info File](vim/the-vim-info-file.md)
|
- [The Vim Info File](vim/the-vim-info-file.md)
|
||||||
- [Toggle Absolute And Relative Paths In BufExplorer](vim/toggle-absolute-and-relative-paths-in-bufexplorer.md)
|
- [Toggle Absolute And Relative Paths In BufExplorer](vim/toggle-absolute-and-relative-paths-in-bufexplorer.md)
|
||||||
|
|||||||
41
rails/ensure-a-rake-task-cannot-write-data.md
Normal file
41
rails/ensure-a-rake-task-cannot-write-data.md
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
# Ensure A Rake Task Cannot Write Data
|
||||||
|
|
||||||
|
Let's say we are writing a substantially complex rake task for aggregating,
|
||||||
|
arranging, and exporting data from our app's database. The idea is to run this
|
||||||
|
rake task against production.
|
||||||
|
|
||||||
|
There is no part of this rake task that needs to write data. It should act as a
|
||||||
|
read-only script. And in fact, we can ensure it isn't able to write any data.
|
||||||
|
We can do that by putting `ApplicationRecord` in read-only mode.
|
||||||
|
|
||||||
|
```ruby
|
||||||
|
task big_export_rake_task: :environment do
|
||||||
|
class ApplicationRecord
|
||||||
|
def readonly?
|
||||||
|
true
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
# a bunch of logic ...
|
||||||
|
puts 'this gets executed'
|
||||||
|
|
||||||
|
# Call method that inadvertently writes data
|
||||||
|
User.update(email: 'readonly@email.com')
|
||||||
|
|
||||||
|
# more logic ...
|
||||||
|
puts 'this does not get executed'
|
||||||
|
end
|
||||||
|
```
|
||||||
|
|
||||||
|
Because we have made all of `ApplicationRecord` read-only, when we run this
|
||||||
|
task, it is immediately going to rollback the changes that were attempted and
|
||||||
|
then raise an error which aborts the rest of the rake task.
|
||||||
|
|
||||||
|
We'll see some messaging like this:
|
||||||
|
|
||||||
|
```
|
||||||
|
rake aborted!
|
||||||
|
ActiveRecord::ReadOnlyRecord: User is marked as readonly
|
||||||
|
```
|
||||||
|
|
||||||
|
h/t [Dillon Hafer](https://dillonhafer.com/)
|
||||||
20
vim/swap-the-position-of-two-split-windows.md
Normal file
20
vim/swap-the-position-of-two-split-windows.md
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
# Swap The Position Of Two Split Windows
|
||||||
|
|
||||||
|
A Vim workflow that I often end up in is one where I have two windows split
|
||||||
|
either vertically or horizontally. I'm usually editing in one side of the split
|
||||||
|
and referencing something from the other side of the split.
|
||||||
|
|
||||||
|
I typically like to have the split them I'm editing in on the top or to the
|
||||||
|
left. If the split that I want to edit from ends up in the bottom or to the
|
||||||
|
right, I can swap its position with the other window using one of Vim's window
|
||||||
|
commands. These are typically prefixed with `Ctrl-w`.
|
||||||
|
|
||||||
|
Swapping the position of two windows is the same as rotating them, either to
|
||||||
|
the left or to the right. In that case, I can use either of these commands:
|
||||||
|
|
||||||
|
```
|
||||||
|
Ctrl-w Ctrl-r # rotates windows downwards/rightwards
|
||||||
|
Ctrl-w r # rotates windows upwards/leftwards
|
||||||
|
```
|
||||||
|
|
||||||
|
See `Ctrl-W_Ctrl-R` for more details.
|
||||||
Reference in New Issue
Block a user