mirror of
https://github.com/jbranchaud/til
synced 2026-01-08 17:48:01 +00:00
Compare commits
2 Commits
62accfcd93
...
89e0c4004b
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
89e0c4004b | ||
|
|
b7e7c85d85 |
@@ -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).
|
||||
|
||||
_1207 TILs and counting..._
|
||||
_1209 TILs and counting..._
|
||||
|
||||
---
|
||||
|
||||
@@ -618,6 +618,7 @@ _1207 TILs and counting..._
|
||||
- [Integers In Postgres](postgres/integers-in-postgres.md)
|
||||
- [Intervals Of Time By Week](postgres/intervals-of-time-by-week.md)
|
||||
- [Is It Null Or Not Null?](postgres/is-it-null-or-not-null.md)
|
||||
- [Label Dollar-Quoted Strings With A Tag](postgres/label-dollar-quoted-strings-with-a-tag.md)
|
||||
- [Limit Execution Time Of Statements](postgres/limit-execution-time-of-statements.md)
|
||||
- [List All Columns Of A Specific Type](postgres/list-all-columns-of-a-specific-type.md)
|
||||
- [List All Rows In A Table](postgres/list-all-rows-in-a-table.md)
|
||||
@@ -782,6 +783,7 @@ _1207 TILs and counting..._
|
||||
- [Retrieve An Object If It Exists](rails/retrieve-an-object-if-it-exists.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)
|
||||
- [Run A Rake Task Programmatically](rails/run-a-rake-task-programmatically.md)
|
||||
- [Run Some Code Whenever Rails Console Starts](rails/run-some-code-whenever-rails-console-starts.md)
|
||||
- [Schedule Sidekiq Jobs Out Into The Future](rails/schedule-sidekiq-jobs-out-into-the-future.md)
|
||||
- [Secure Passwords With Rails And Bcrypt](rails/secure-passwords-with-rails-and-bcrypt.md)
|
||||
|
||||
38
postgres/label-dollar-quoted-strings-with-a-tag.md
Normal file
38
postgres/label-dollar-quoted-strings-with-a-tag.md
Normal file
@@ -0,0 +1,38 @@
|
||||
# Label Dollar-Quoted Strings With A Tag
|
||||
|
||||
In [Escaping String Literals with Dollar
|
||||
Quoting](escaping-string-literals-with-dollar-quoting.md), I showed how
|
||||
PostgreSQL supports escaped string literals so that you don't have to put
|
||||
backslashes everywhere. This is done by opening and closing the string with
|
||||
`$$`.
|
||||
|
||||
What if your string literal is going to contain a sequence of two `$` symbols?
|
||||
Or a better hypothetical, what if you want to convey some information about
|
||||
what the string represents?
|
||||
|
||||
For either of these, the _tagged_ dollar-quoting is a great fit.
|
||||
|
||||
```sql
|
||||
> select $JSON${"name": "Sally's Bistro", "price": "$$$"}$JSON$::jsonb;
|
||||
jsonb
|
||||
--------------------------------------------
|
||||
{"name": "Sally's Bistro", "price": "$$$"}
|
||||
(1 row)
|
||||
|
||||
> select $JSON${"name": "Sally's Bistro", "price": "$$$"}$JSON$::jsonb->'name' as name;
|
||||
name
|
||||
------------------
|
||||
"Sally's Bistro"
|
||||
(1 row)
|
||||
```
|
||||
|
||||
The tagged dollar-quoting allows me to write a string that can be cast to
|
||||
`jsonb` without having to think about which characters need to be escaped. In
|
||||
the second example, I'm able to interact with it like any `jsonb` entity.
|
||||
|
||||
Here, our tag is `JSON`. It helps convey that the string literal represents
|
||||
JSON. A tag "follows the same rules as an unquoted identifier, except that it
|
||||
cannot contain a dollar sign." The tag goes between the dollar signs and is
|
||||
case-sensitive.
|
||||
|
||||
[source](https://www.postgresql.org/docs/current/sql-syntax-lexical.html#SQL-SYNTAX-DOLLAR-QUOTING)
|
||||
35
rails/run-a-rake-task-programmatically.md
Normal file
35
rails/run-a-rake-task-programmatically.md
Normal file
@@ -0,0 +1,35 @@
|
||||
# Run A Rake Task Programmatically
|
||||
|
||||
Typically the way to run a rake task is with the `rake` command from the
|
||||
command line.
|
||||
|
||||
```bash
|
||||
$ rake example:env
|
||||
```
|
||||
|
||||
What if you have a rake task that you want to invoke as part of a Ruby script
|
||||
or from somewhere in your Rails codebase?
|
||||
|
||||
Your tasks can be called programmatically as well.
|
||||
|
||||
Consider these two rake tasks:
|
||||
|
||||
```ruby
|
||||
namespace :example do
|
||||
task :env do
|
||||
puts "Current Environment: #{Rails.env.upcase}"
|
||||
end
|
||||
|
||||
task :message, [:msg] do |task, args|
|
||||
puts "Message: #{args[:msg]}"
|
||||
end
|
||||
end
|
||||
```
|
||||
|
||||
These can be called from somewhere else by referencing and invoking them like
|
||||
so.
|
||||
|
||||
```ruby
|
||||
Rake::Task["example:env"].invoke
|
||||
Rake::Task["example:message"].invoke("Nice rake task!")
|
||||
```
|
||||
Reference in New Issue
Block a user