mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
1064c51609
I wrote this shell script to find words from the Rails repo, so I can paste them into https://www.horsepaste.com/ for the [codenames game](https://en.m.wikipedia.org/wiki/Codenames_(board_game)). ```bash git grep -Il '' | \ grep -v -E "CHANGELOG|Gemfile|gemspec|package\.json|yarn\.lock" | \ xargs cat | \ sed '/[^ ]\{10,\}/d' | \ sed 's/\([A-Z]\)/ \1/g' | \ tr 'A-Z' 'a-z' | \ tr -c -s 'a-z' '\n' | \ sed '/^.\{0,3\}$/d' | \ sort | \ uniq | \ tr '\n' ',' | \ pbcopy ``` You can see the result in https://www.horsepaste.com/rails-fixed. Click "Next game" to cycle the words. Found some typos in the codebase from this 😂 This is how I generated the list of possible typos: ```bash git grep -Il '' | \ grep -v -E "CHANGELOG|Gemfile|gemspec|package\.json|yarn\.lock" | \ xargs cat | \ sed '/[^ ]\{10,\}/d' | \ sed 's/\([A-Z]\)/ \1/g' | \ tr 'A-Z' 'a-z' | \ tr -c -s 'a-z' '\n' | \ sed '/^.\{0,3\}$/d' | \ sort | \ uniq | \ aspell --ignore-case list ``` I manually reviewed the list and made the corrections in this commit. The rest on the list are either: * Bugs in my script: it split things like "doesn't" into "doesn" and "t", if find things like `#ffffff` and extracts "ffffff" as a word, etc * British spelling: honour, optimised * Foreign words: bonjour, espanol * Names: nginx, hanekawa * Technical words: mutex, xhtml * Portmanteau words: autosave, nodelist * Invented words: camelize, coachee * Shortened words: attrs, repo * Deliberate typos: hllo, hillo (used in code examples, etc) * Lorem ipsum words: arcu, euismod This is the [output](https://gist.github.com/chancancode/eb0b573d667dc31906f33f1fb0b22313) of the script *after* fixing the typos included in this commit. In theory, someone can run that command again in the future and compare the output to catch new typos (i.e. using my list to filter out known typos). Limitations: the aspell dictionary could be wrong, I could have miss things, and my script ignores words that are less than 3 characters or longer than 10 characters.
44 lines
1.2 KiB
Ruby
44 lines
1.2 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
module ActiveStorage
|
|
# This is an abstract base class for analyzers, which extract metadata from blobs. See
|
|
# ActiveStorage::Analyzer::ImageAnalyzer for an example of a concrete subclass.
|
|
class Analyzer
|
|
attr_reader :blob
|
|
|
|
# Implement this method in a concrete subclass. Have it return true when given a blob from which
|
|
# the analyzer can extract metadata.
|
|
def self.accept?(blob)
|
|
false
|
|
end
|
|
|
|
# Implement this method in concrete subclasses. It will determine if blob analysis
|
|
# should be done in a job or performed inline. By default, analysis is enqueued in a job.
|
|
def self.analyze_later?
|
|
true
|
|
end
|
|
|
|
def initialize(blob)
|
|
@blob = blob
|
|
end
|
|
|
|
# Override this method in a concrete subclass. Have it return a Hash of metadata.
|
|
def metadata
|
|
raise NotImplementedError
|
|
end
|
|
|
|
private
|
|
# Downloads the blob to a tempfile on disk. Yields the tempfile.
|
|
def download_blob_to_tempfile(&block) #:doc:
|
|
blob.open tmpdir: tmpdir, &block
|
|
end
|
|
|
|
def logger #:doc:
|
|
ActiveStorage.logger
|
|
end
|
|
|
|
def tmpdir #:doc:
|
|
Dir.tmpdir
|
|
end
|
|
end
|
|
end
|