1
0
mirror of https://github.com/jbranchaud/til synced 2026-01-10 10:38:01 +00:00

Compare commits

...

2 Commits

Author SHA1 Message Date
jbranchaud
198e40fc01 Add Swap The Position Of Two Split Windows as a Vim TIL 2023-02-03 13:57:11 -06:00
jbranchaud
7212785cb3 Add Ensure A Rake Task Cannot Write Data as a Rails TIL 2023-02-03 10:44:55 -06:00
3 changed files with 64 additions and 1 deletions

View File

@@ -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).
_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)
- [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)
- [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)
- [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)
@@ -1450,6 +1451,7 @@ _1281 TILs and counting..._
- [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)
- [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)
- [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)

View 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/)

View 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.