diff options
author | Luke Shumaker <lukeshu@sbcglobal.net> | 2016-03-21 01:55:24 -0400 |
---|---|---|
committer | Luke Shumaker <lukeshu@sbcglobal.net> | 2016-03-21 01:55:24 -0400 |
commit | 75081c63ee8b204a239572a232d50455556882f4 (patch) | |
tree | 4b79ac766eed511254992bf9dbddc5a03a94db83 /public/rails-improvements.html | |
parent | b46531457666c5bac7a9d5b28cb0481e155e2419 (diff) |
Go ahead and add the generated files. So I know about regressions.
Diffstat (limited to 'public/rails-improvements.html')
-rw-r--r-- | public/rails-improvements.html | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/public/rails-improvements.html b/public/rails-improvements.html new file mode 100644 index 0000000..9c114f7 --- /dev/null +++ b/public/rails-improvements.html @@ -0,0 +1,66 @@ +<!DOCTYPE html> +<html lang="en"> +<head> + <meta charset="utf-8"> + <title>Miscellaneous ways to improve your Rails experience — Luke Shumaker</title> + <link rel="stylesheet" type="text/css" href="assets/style.css"> +</head> +<body> +<header><a href="/">Luke Shumaker</a> » <a href=/blog>blog</a> » rails-improvements</header> +<article> +<h1 id="miscellaneous-ways-to-improve-your-rails-experience">Miscellaneous ways to improve your Rails experience</h1> +<p>Recently, I've been working on <a href="https://github.com/LukeShu/leaguer">a Rails web application</a>, that's really the baby of a friend of mine. Anyway, through its development, I've come up with a couple things that should make your interactions with Rails more pleasant.</p> +<h2 id="auto-reload-classes-from-other-directories-than-app">Auto-(re)load classes from other directories than <code>app/</code></h2> +<p>The development server automatically loads and reloads files from the <code>app/</code> directory, which is extremely nice. However, most web applications are going to involve modules that aren't in that directory; and editing those files requires re-starting the server for the changes to take effect.</p> +<p>Adding the following lines to your <a href="https://github.com/LukeShu/leaguer/blob/c846cd71411ec3373a5229cacafe0df6b3673543/config/application.rb#L15"><code>config/application.rb</code></a> will allow it to automatically load and reload files from the <code>lib/</code> directory. You can of course change this to whichever directory/ies you like.</p> +<pre><code>module YourApp + class Application < Rails::Application + … + config.autoload_paths += ["#{Rails.root}/lib"] + config.watchable_dirs["#{Rails.root}/lib"] = [:rb] + … + end +end</code></pre> +<h2 id="have-submit_tag-generate-a-button-instead-of-an-input">Have <code>submit_tag</code> generate a button instead of an input</h2> +<p>In HTML, the <code><input type="submit"></code> tag styles slightly differently than other inputs or buttons. It is impossible to precisely controll the hight via CSS, which makes designing forms a pain. This is particularly noticable if you use Bootstrap 3, and put it next to another button; the submit button will be slightly shorter vertically.</p> +<p>The obvious fix here is to use <code><button type="submit"></code> instead. The following code will modify the default Rails form helpers to generate a button tag instead of an input tag. Just stick the code in <a href="https://github.com/LukeShu/leaguer/blob/521eae01be1ca3f69b47b3170a0548c3268f4a22/config/initializers/form_improvements.rb"><code>config/initializers/form_improvements.rb</code></a>; it will override <code>ActionView::Hlepers::FormTagHelper#submit_tag</code>. It is mostly the standard definition of the function, except for the last line, which has changed.</p> +<pre><code># -*- ruby-indent-level: 2; indent-tabs-mode: nil -*- +module ActionView + module Helpers + module FormTagHelper + + # This is modified from actionpack-4.0.2/lib/action_view/helpers/form_tag_helper.rb#submit_tag + def submit_tag(value = "Save changes", options = {}) + options = options.stringify_keys + + if disable_with = options.delete("disable_with") + message = ":disable_with option is deprecated and will be removed from Rails 4.1. " \ + "Use 'data: { disable_with: \'Text\' }' instead." + ActiveSupport::Deprecation.warn message + + options["data-disable-with"] = disable_with + end + + if confirm = options.delete("confirm") + message = ":confirm option is deprecated and will be removed from Rails 4.1. " \ + "Use 'data: { confirm: \'Text\' }' instead'." + ActiveSupport::Deprecation.warn message + + options["data-confirm"] = confirm + end + + content_tag(:button, value, { "type" => "submit", "name" => "commit", "value" => value }.update(options)) + end + + end + end +end</code></pre> +<p>I'll probably update this page as I tweak other things I don't like.</p> + +</article> +<footer> +<p>The content of this page is Copyright © 2014 <a href="mailto:lukeshu@sbcglobal.net">Luke Shumaker</a>.</p> +<p>This page is licensed under the <a href="https://creativecommons.org/licenses/by-sa/3.0/">CC BY-SA-3.0</a> license.</p> +</footer> +</body> +</html> |