Get the current layout's name in a view or partial
This was valid for ancient Rails versions. It won't work on current Railses.
This returns the name (including path) of your current layout:
response.layout
=> "layouts/admin" # inside views that are using the 'admin' layout
You most likely do not need the full path, so go ahead and do this:
File.basename(response.layout)
=> "admin"
Related cards:
How to get the hostname of the current machine in Rails or a Ruby script
Use Socket.gethostname
. So for a machine whose hostname is "happycat", it will look like this:
>> Socket.gethostname
=> "happycat"
That should work right away for your Rails application. For plain Ruby, you first need to do:
requi...
Calling a helper method with the same name as your current partial
Partials always define a local variable with the same name as themselves. E.g. when you are in _recent_users.html.erb
, a local variable recent_users
will be defined and overshadow any helper method that is also called recent_users()
.
If you...
What's in a View? A look at the alternatives
Great look at the tradeoffs between progressive enhancement with jQuery or similiar, vs. client-side views.
Detect the current Rails environment from JavaScript or CSS
Detecting if a Javascript is running under Selenium WebDriver is super-painful. It's much easier to detect the current Rail...
Rails: render a template that accepts a block by using the layout option of render
Let's say you have a form that you render a few times but you would like to customize your submit section each time. You can achieve this by rendering your form partial as layout and passing in a block. Your template or partial then serves as the ...
How to get information about a gem (via CLI or at runtime from Ruby)
When you need information about a gem (like version(s) or install path(s)), you can use the gem
binary from the command line, or the Gem
API inside a ruby process at runtime.
gem
binary (in a terminal)
You can get some information abou...
Rails always tries to use a layout with the same name as your controller
If you have a FooController
and also have a layout app/views/layouts/foo.html
, Rails will use this without being told so.
This is super convenient except never.
FactoryBot: How to get the class from a factory name
When you want to look up a class for a given factory, do it like this:
>> FactoryBot.factories.find('admin').build_class
=> User
In older versions, you could do:
>> FactoryBot.factory_by_name('admin').build_class
=> User
Linux: How to make a terminal window title reflect the current path
By default, your terminal emulator (Gnome Terminal, Terminator, etc.) sets some kind of window title to reflect the shell type you are running (e.g. /bin/bash
).
This is most often not too helpful, but you can change that from your shell.
To set...
Xfce: Classic panel layout in the style of Gnome 2 or Windows XP
Xfce gives you a million options to configure your panels. Together with Xfce's sometimes arcane configuration UI, this can be a huge time waster and super-annoying if you need to get work done the same day.
This card desc...