Provide the list or PR or other contributions that proves understanding of each subject group or ask for tech interview (more time effective), where we will go step by step throught the following list.
Max score: 331
Minimum requirements:
- Independent: 240 (+ all blue diamonds)
- Mid: 280 (+ all orange diamonds)
- Senior: 300 (+ all red triangles)
You will not get a pass if you check more than 5 items that you will not be able to prove being knowledgeable about during verification, so check items only if you are sure about them. Be advised, that questions will be rather general ("what does that return?", "what is it all about?", "what does that mean?", "how does that differ from x?").
Indicate if you have knowledge/experience necessary to apply following skills effectively
- Active Record pattern
- ORM
- CRUD
- Create πΉ
- Read πΉ
- Update πΉ
- Delete πΉ
- Validations
- Kinds of validations and when to use them πΉ
- Skipping validations
-
valid?
,invalid?
,errors
πΉ - Validation helpers
-
acceptance
πΉ -
validates_associated
-
confirmation
-
exclusion
andinclusion
-
format
πΉ -
length
πΉ -
numericality
πΉ -
presence
andabsence
πΉ -
uniqueness
πΉ
-
-
validates_with
- Validation options
- Strict validations
- Conditional validations πΉ
- Custom validators πΈ
- Custom validation methods
-
errors[:base]
- Displaying Validation Errors in Views πΉ
- Callbacks
- Migrations
- Creating migrations πΉ
- Creating tables πΉ
- Column modifiers
-
null
πΉ -
default
πΉ -
index
-
limit
-
precision
-
scale
-
- Column modifiers
- Changing tables πΉ
- Changing columns
-
add_column
πΉ -
add_foreign_key
-
add_index
-
add_reference
-
add_timestamps
-
change_column_default
πΉ -
change_column_null
πΉ -
create_join_table
-
create_table
πΉ -
disable_extension
-
drop_join_table
-
drop_table
πΉ -
enable_extension
-
remove_column
πΉ -
remove_foreign_key
-
remove_index
-
remove_reference
-
remove_timestamps
-
rename_column
πΉ -
rename_index
-
rename_table
-
-
connection.execute
πΈ - Using the up/down methods πΉ
- Reverting previous migrations
- CLI
- Changing existing migrations
- Differences between :sql and :ruby schema dumps πΈ
- Responsibilities of migrations, seeds and data-fixes πΉ
- Associations
-
belongs_to
πΉ -
has_one
πΉ -
has_many
πΉ -
has_many :through
πΉ -
has_one :through
-
has_and_belongs_to_many
- Choosing between
belongs_to
andhas_one
πΉ - Choosing Between
has_many :through
andhas_and_belongs_to_many
πΉ - Polymorphic associations πΈ
- Self joins
- Bi-directional associations and
:inverse_of
-
- Query Interface
- Retrieving single object πΉ
- Retrieving multiple objects in batches
- Conditions
- Pure string πΉ
- Array πΉ
- Placeholder πΉ
- Hash πΉ
- NOT πΉ
- OR
- Ordering πΉ
- Selecting specific fields
- Limit and Offset
- Group πΉ
- Having
- Overriding conditions
- Null relation
- Readonly objects
- Optimistic locking πΈ
- Pessimistic locking
- Joining tables πΉ
- Eager-loading associations πΉ
- Scopes πΉ
- Enums πΈ
- Retrieving filtered and specific data from multiple tables πΈ
- Find or build new object
-
find_by_sql
-
select_all
-
pluck
πΉ -
ids
-
exists?
πΉ - Calculations
- [Rendering]
- An action or template πΉ
- Text and HTML
- JSON, XML
- Options for render
- Conditional layouts
- Runtime chosen layouts
- Avoiding double render errors
-
redirect_to
andredirect_back
with fallback πΉ - Using
head
πΉ - Layouts
- Linking to JS and CSS files
- Using
content_for
andyield
- Rendering partials πΉ
- Using partials to render resource or collection πΉ
- Spacer templates
- Using nested layouts
- ERB πΉ
- HAML
- SLIM
- Dealing with basic forms
- Dealing with resource forms πΉ
- Uploading files
- Understanding parameter naming conventions πΉ
- Controller responsibilities πΉ
- Controller naming conventions πΉ
- Parameters πΉ
- JSON parameters
- Routing parameters
- Strong attributes πΈ
- Sessions πΉ
-
flash
andflash.now
πΉ - Cookies πΈ
- Filters
-
before_action
πΉ -
skip_before_action
-
after_action
,around_action
- Using filters with blocks
-
- Concept of Request forgery protection πΈ
- Working with
request
andresponse
objects - HTTP Basic authentication
- Streaming data
- RESTful downloads
- Live streaming
- Log filtering
-
rescue_from
πΈ - Forcing HTTPS
- Listing routes πΉ
- Resource routing πΉ
- Non-resourceful routing
- Switching and persisting locale between requests πΉ
- Setting locale from subdomain or domain
- Localizing time and date πΉ
- Passing variables to translations
- Pluralization
- Localized views
- Using safe HTML translations
- Translations for ActiveRecord models
- Options for translating model content
- Sending emails πΉ
- Sending emails with attachments
- Sending multipart emails
- Sending emails asynchronously πΉ
- Using URL helpers in emails
- Using layouts for emails
- Styling emails using CSS
- Including local images in emails
- Previewing emails
- Intercepting emails
- Enqueuing a job using delayed job πΉ
- Enqueuing a job using sidekiq πΉ
- Scheduling a job using sidekiq πΈ
- Use sidekiq for CRON tasks πΈ
- Configure sidekiq, i.e. retry strategy (number of retries and delay between them)
- Understaning Dead Set & death notifications πΈ
- Ensure uniqueness of jobs being run
- Cancelling a sidekiq job
- Testing sidekiq πΈ
- Setting up sidekiq on Heroku πΉ
- Securing and using sidekiq WebUI πΈ
- Attach one or many files to a record
- Delete an attached file
- Link to an attached file.
- Use variants to transform images.
- Generate an image representation of a non-image file, such as a PDF or a video.
- Send file uploads directly from browsers to a storage service, bypassing application servers.
- Clean up files stored during testing.
- Update UI using backend (read from socket)
- Update backend using UI (write to socket)
- Testing scopes
- Controllers πΉ π
- Requests πΈ π
- Features πΉ π
- Views πΈ π
- Rake tasks πΈ π
- POROs πΉ
- Techniques
- Pure Doubles πΉ π
- Partial Doubles πΉ π
- Verifying Doubles πΉ π
- Stubs πΉ
- Mocks πΉ
- Spies πΉ
- Constraining Method Arguments πΉ
- Constraining How Many Times a Method Gets Called
- Configuring Responses πΈ
- Stubbing constants πΉ π
- Using WebMock πΈ π
- Using VCR πΈ π
- Creating and using custom matchers πΈ π
- Composing matchers
- Using factories effectively
- Defining and using factories (+ building / creating multiple records) πΉ
- Traits πΉ
- Dependent and transient attributes πΉ
- Sequences πΉ
- Callbacks πΊ
- Custom construction and custom methods to persist objects πΊ
- Testing methods yielding responses πΊ π
- BDD
- Readability-driven BDD (part 1, part 2) π
- Identifying subject πΉ
- Organizing stages of tests πΉ π
- Keeping everything in "it" πΉ
- Being explicit about data πΉ π
- Proper naming of contexts and expectations πΈ π
- Using proper matchers
- Ways to reduce setup phase LOC πΊ
- Ways to reduce overall tests count and size πΊ
- Identifying testing antipatterns (part 1, part 2) πΊ
- Helpers
-
stub_env
(also can be replaced with this gem) πΉ -
at_date
&freeze_time
-
ViewPage
πΈ -
InvokeTask
-
GetMessagePart
-
json_response
πΉ -
DownloadsHelpers
-
Feature Helpers
(ss
,display_logs
,reload_page
) -
BehaviorDSL
πΈ π -
have_table_row
πΉ
-
Be prepared to describe responsibilities correlated with following patterns (how those work, when to use them, are there recommendations related to using them)
- Service Object (selleo pattern) πΉ π
- Form Object (selleo pattern) πΉ π
- Query Object (selleo pattern)
- Wrapper πΉ π
- Client πΉ π
- Decorator πΉ
- Presenter
- Serializer πΈ
- Controller πΉ
- Model πΉ
- PORO πΈ
- Helper
- Validator
- Policy πΈ
- Views πΉ
- Layout πΉ
- Worker πΉ
- Collection πΊ
- Calculation πΉ
- Pub/Sub using wisper
- Broadcasting events πΈ π
- Subscribing to events πΈ π
Be prepared to explain following terms/concepts/techniques etc.
- Difference between using
attr_accessor
,cattr_accessor
andclass_attribute
for class-level attributes πΊ - CBRA πΊ
Mark which gems/libraries you have used on projects and can use them effectively.
- Selleo/pattern πΉ
- aasm
- datafix
- devise πΉ
- draper πΈ
- jsonapi-resources
- pagy
- pry-rails πΉ
- pundit πΈ
- ransack
- scenic πΈ
- searchkick
- sidekiq πΉ
- simple_form
- virtus πΈ
- brakeman
- dotenv-rails πΉ
- rubocop πΉ
- wisper
- Selleo/rspec-tapas πΉ
- capybara πΉ
- factory_bot_rails
- vcr
- webmock
- database_cleaner πΉ
- rspec-rails πΉ
- simplecov
- shoulda-matchers
Mark which tools you have used on projects and can use them effectively.
- Rubocop (setup and using) πΉ
- Heroku (deploying new app) πΉ
- Brakeman (setup and using)
- CI (setup and using)
- IDE or Editor of choice
- Quickly finding files πΉ