summaryrefslogtreecommitdiff
path: root/public/rails-improvements.html
diff options
context:
space:
mode:
Diffstat (limited to 'public/rails-improvements.html')
-rw-r--r--public/rails-improvements.html66
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 &lt; Rails::Application
+ …
+ config.autoload_paths += [&quot;#{Rails.root}/lib&quot;]
+ config.watchable_dirs[&quot;#{Rails.root}/lib&quot;] = [: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>&lt;input type=&quot;submit&quot;&gt;</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>&lt;button type=&quot;submit&quot;&gt;</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 = &quot;Save changes&quot;, options = {})
+ options = options.stringify_keys
+
+ if disable_with = options.delete(&quot;disable_with&quot;)
+ message = &quot;:disable_with option is deprecated and will be removed from Rails 4.1. &quot; \
+ &quot;Use &#39;data: { disable_with: \&#39;Text\&#39; }&#39; instead.&quot;
+ ActiveSupport::Deprecation.warn message
+
+ options[&quot;data-disable-with&quot;] = disable_with
+ end
+
+ if confirm = options.delete(&quot;confirm&quot;)
+ message = &quot;:confirm option is deprecated and will be removed from Rails 4.1. &quot; \
+ &quot;Use &#39;data: { confirm: \&#39;Text\&#39; }&#39; instead&#39;.&quot;
+ ActiveSupport::Deprecation.warn message
+
+ options[&quot;data-confirm&quot;] = confirm
+ end
+
+ content_tag(:button, value, { &quot;type&quot; =&gt; &quot;submit&quot;, &quot;name&quot; =&gt; &quot;commit&quot;, &quot;value&quot; =&gt; 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>