Rails を真似て作られたといわれている CakePHP で、 部分テンプレートの使用例を説明します。 英語ドキュメントを見ると正しく設定できるのですが、 日本語ドキュメントは古い状態なので、日本語ドキュメントを見ていると解決できません。
続きを読む CakePHP3 rails のように部分テンプレートを使用する方法「Rails」タグアーカイブ
Rails seed から task を実行したときの方法
Rails の seeds.rb
で task を実行したいとのことで、 やり方を調べました。
環境
- Ruby 2.2.2p95
- Rails 4.1.8
- Rake 10.4.2
rails g task sample shot
とコマンドを実行して、タスクを作っておきます。 下のように。
1 2 3 4 5 6 |
namespace :sample do desc "shot sample" task shot: :environment do # something what to do end end |
タスク自体は bundle exec rake sample:shot
で実行できます。 これを更に bundle exec rake db:seed
とやったときにも実行されるようにするのが今回のゴールです。 おそらく、 rails のコード内から task を実行するのも似たような感じでいけると思います。
解決策
seeds.rb
に下の記述を追加します。
1 2 |
ENV['SOMETHING'] = 'value' Rake::Task['sample:shot'].invoke |
環境 (test, development, production) は、 rake db:seed
で設定されたものが引き継がれます。 上では SOMETHING
に 'value'
という値を設定しています。 rake db:fixture:load FIXTURES=xxxx
で設定するようなやつです。
rails で sitemap を作成する gem
Ruby で サイトマップ を作成する gem を紹介します。
sitemap_generator
sitemap_generator を使うと、サイトマップが簡単に作成できます。 Ruby だけでも使えます……が、ここでは Rails の上で私が使用した方法を紹介します。
使用方法
環境は次の通りです。
- Ruby 2.0.0p451
- Rails 4.1.0
- sitemap_generator 5.0.2
Gemfile
にsitemap_generator
を 追加してbundle install
します。rake sitemap:install
を実行します。config/sitemap.rb
というファイルが作成されます。- このファイルに記述したサイトマップ生成スクリプトは rake sitemap:refresh によって更新されます。
config/sitemap.rb
が作成される他は特になにも起こりません。sitemap_generator
のtasks.rb
を覗いてみるとよくわかります。
sitemap.rb
を編集します。- デフォルトでは ルート(“/”)へのサイトマップが3つ作成されます。 それら3つは
changefreq
が異なりますが、いらないので削除します。 コード内にSitemapGenerator::Sitemap.include_root = false
を記述します。 SitemapGenerator::Sitemap.create_index = true
を記述して、サイトマップのリストを作成します。- サイトマップの作成を
ping
で通知します。 Google と Bing に届くように設定します。 Yahoo! は Google と検索エンジンが同じであるため Yahoo! の設定は必要ありません。123SitemapGenerator::Sitemap.ping_search_engines(:google => 'http://www.google.com/webmasters/tools/ping?sitemap=%s',:bing => 'http://www.bing.com/webmaster/ping.aspx?sitemap=%s') lastmod
,priority
,changefreq
などを出力したくない場合には、それぞれの値にnil
を設定します。rake sitemap:refresh
が実効されるように、crontab
に記述します。
- デフォルトでは ルート(“/”)へのサイトマップが3つ作成されます。 それら3つは
ツールチップを表示するコード
Ruby On Rails のシステムの中でツールチップを表示しようと思ったときのメモです。
やることは単純で、クリックされたらヘルプを表示して、もう一度クリックされたらヘルプを隠すというものです。はてなマークがクリックされたらツールチップを表示・非表示するということです。
実装は javascript (jQuery) と CSS で行いました。そして Rails の helper に便利メソッドを作りました。以下がそのコード。
環境
- Ruby 1.8.7p374
- Rails 3.0.1
- jQuery 1.4.3
基本
1 2 3 4 5 6 7 8 9 10 |
.help-tooltip { max-width: 600px; background-color: #fff; display: none; z-index: 10; font-size: 12px; position: static; border: solid 1px black; padding: 2px; } |
1 2 3 4 5 6 7 |
$('.help-tooltip-trigger').live( 'click', function () { $(this).next().slideToggle('fast'); } ); |
上のように javascript と css を記述して、次のように HTML を書きます。
1 2 3 4 5 6 |
<span class="help-tooltip-trigger"> <img src="image/quotation.png" style="width:16px;height:16px;" /> </span> <div class="help-tooltip"> <p>ヘルプメッセージ</p> </div> |
image/quotation.png はクリックするモノです。その画像をクリックすると表示・非表示が切り替えます。
正確にいうなら、画像を囲んでいる span をクリックすると、その直後のタグの表示・非表示を切り替えます。つまりクリックするものは画像でなくてもよく、もっというならツールチップ以外にも使えるということです。
helper の活用
Rails には helper というものがあるので活用してみます。
1 2 3 4 5 6 7 8 9 |
def help_tooltip(message, size = '16x16') result = content_tag(:span, {:class => 'help-tooltip-trigger'}) do image_tag 'icons/question.png', :size => size end result += content_tag(:div, {:class => 'help-tooltip'}) do raw message end return result end |
このメソッドを次のようにして使うと、上に書いた HTML のように出力されます。
1 |
<%=help_tooltip '<p>ヘルプメッセージ</p>', '16x16'%> |
2番目の引数はデフォルト値を設定しており、引数がなくてもいいようにしています。
私がこの tooltip 表示を書き始めたら ほかの人が随所で真似し始めたので、もっと楽にできる helper のメソッドを作ったというお話でした。