How to write basic rake applications
Rails アプリケーションを作っていると、rake db:migrate というコマンドをよく叩きます。しかし、Rake についてよく理解していないので調査してみました。 Rake とは?Rake は Ruby 版 makeです。Rake でできることメンバーのリストを取得して、Email を送る毎日のバッチ処理古いキャッシュを消去し生成データベースやサブバージョンのバックアップデータ操作のスクリプトを走らせるタスクを登録するゆで卵を食べるために、以下の 3 つのタスクを考えてみます。卵を買う水を沸騰させるゆで卵をゆでるこれらのタスクを Rake ファイルを使って呼出してみます。task :purchaseEggs do puts 'Purchase eggs.' end task :boilWater do puts 'Boil the water.' end task :makeBo
If you’re developing with Rails you’ve probably encountered rake once or twice. This blog post aims to walk you through where rake came from and an introduction on how to use it effectively in your Rails apps. A Little Bit of History Rake is the project of Jim Weirich. It’s a build tool. For a good laugh and an even more in depth history check out the "rational.rdoc" from the Rake documentation. E
rake タスクを定義するときに、既に同じ名前のタスクが存在する場合は、処理内容が「再定義(上書き)」されるのではなく、定義した順に処理が実行されます。 例えば、以下のように hello というタスクを 2 回定義しているとします。 # lib/tasks/hello.rake desc 'Hello1' task :hello do puts 'Hello1' end desc 'Hello2' task :hello do puts 'Hello2' end 「rake hello」で hello タスクを実行すると、タスクを定義した順に実行されることが分かります。 $ rake hello Hello1 Hello2 「rake -T hello」で hello タスクの情報を表示すると、定義した内容がそれぞれ実行されることが分かります(desc で指定した説明が '/' で区切られ
Railsで使うRakeタスクは大きくわけて3種類あり、普通はこの順番で定義されることになっている。 gemのタスク アプリケーション固有のタスク Railsのタスク まずソースコードを読んでみた。 Rakefile # Rakefile require File.expand_path('../config/application', __FILE__) Rails.application.load_tasks config/application.rbを読んでからRails.application.load_tasksを呼ぶ。 Rails.application.load_tasks Rails.application.load_tasksはrailtieのRails::Engineに定義されている。 # railties-4.1.0/lib/rails/engine.rb def l
Rakefileに記述する Rakefileに記述して指定します。 task default: :about この様に書くと、タスクを指定せずrakeコマンドのみを実行した時にrake aboutと同じ挙動になります。 taskは複数設定することも可能です。 task default: [:about, :routes] aboutが実行された後、routesが実行されます。 デフォルトに設定されているタスクを解除する installしたgemの中で、taskをデフォルトに設定している場合もあります。 そのタスクをデフォルトで実行したくない場合は、一度デフォルトタスクを解除する必要があります。 task(:default).clear task default: :about 一度clearしてあげることで、defaultタスクの中身が空になり、実行されるのはaboutだけとなります。
使っているのはこんな環境です。 HerokuにRailsのProductionとStaging環境がある。 Stagingで任意のブランチを動かしたいことがある。 今までHerokuにデプロイする時はこうしてましたが、 $ git push prod master 今後はこのようになりました。 $ bundle exec rake deploy:prod Dryrunも出来ます。 $ bundle exec rake deploy:prod DRYRUN=1 Stagingで任意のブランチを動かしたい時はこちら。 $ bundle exec rake deploy:staging BRANCH=<any-branch> Gistのページ にも補足情報を書きました。 皆さん、Herokuへのデプロイはどんな方法でやってます? See also ChatWorkのAPIを叩けるGemをつくった
■ [rake] Rake で任意のタスクの前後に別のタスクを実行する これどうやるんだろうと思って調べてみたら mrkn が rake-hooks というのを見つけていたので実際に使ってみたんだけど、delayed_job の after や before というメソッドと衝突するような作りだったりして使い物にならないので諦めた。 もう少し調べてみると Rake 本体にある Rake::Task#enhance を使うと実現できるらしい。使い方はこんな感じ。 task :mybefore do puts :foo end task :myafter do puts :bar end task :buzz do puts :buzz end Rake::Task[:buzz].enhance([:mybefore]) do Rake::Task[:myafter].invoke end 実
はてなグループの終了日を2020年1月31日(金)に決定しました 以下のエントリの通り、今年末を目処にはてなグループを終了予定である旨をお知らせしておりました。 2019年末を目処に、はてなグループの提供を終了する予定です - はてなグループ日記 このたび、正式に終了日を決定いたしましたので、以下の通りご確認ください。 終了日: 2020年1月31日(金) エクスポート希望申請期限:2020年1月31日(金) 終了日以降は、はてなグループの閲覧および投稿は行えません。日記のエクスポートが必要な方は以下の記事にしたがって手続きをしてください。 はてなグループに投稿された日記データのエクスポートについて - はてなグループ日記 ご利用のみなさまにはご迷惑をおかけいたしますが、どうぞよろしくお願いいたします。 2020-06-25 追記 はてなグループ日記のエクスポートデータは2020年2月28
昨晩は、熊本で震度3の地震がありました。地震と共に私の心も大きく揺れるとともに、普段の防災意識の低さに自信を失ったしだいです。そこで、Herokuのdb:migrateにまつわる話です。 RailsではDBのスキーマを変更した場合は、db:migrateでバージョンを上げていくのが王道です。 Railsでテーブルに列を追加するメモ。 - このブログは証明できない。 ですが、実験中やテスト中などに、「あ。このカラムはintegerじゃなくてstringだった」など気づくこともあります。そんなとき、バージョンを上げるのではなく、最初からやり直そうと考えることも多いのです。DBをバッサリ削除したり。 ところが、Herokuだと、DBを削除することができません。そんな時は、こうします。 % heroku rake db:migrate:redo STEP=10 STEPの値は適当です。大きめにして
Rails 4.0.0がリリースされたので今参加しているプロジェクトのアプリのアップデートが出来るかを試してみました。 やってみた結果としては、2.3 -> 3.0や、3.0 -> 3.1に比べると大分楽にバージョンアップできる感じです。 たまたま今のプロジェクトで引っかかった問題について、メモがてらまとめておきます。 rake rails:update diffを見ながらconfigファイルを書き換える。 そんなに大きな変更は無い。 rails4からはinitializerに色々移せって感じで、application.rbが軽量化されてるけど、元のままでも別に問題無い。 設定項目の重複だけ注意。 strong_parameters 元々、gemで先行導入して取り入れていたので概ね問題無く移行できました。 attr_accesibleを利用したセキュリティ対策は、外部のgemに分離されてい
こんにちわ、みけです。 お金がないので、ブログを読んでもらって、 google adsenseをみんなに押してもらわないと、 死んでしまいます。 さて、そんなことはどうでもよくて、 bloggerでブログをやっていたときは、 googleさんが勝手に検索エンジンに乗せてくれるので、 検索しやすかったのですが、 githubでブログを書くようになって、 検索で出にくくなっていたので、 更新pingをrakeで送りつけるようにしました。 まあ、「更新ping ruby」でググった結果をrakeのタスクにしただけですが… で、追加したのがこんな感じのタスクです。 rakefile require "yaml" require "xmlrpc/client" #-- sending ping --# desc "Sedning ping to Web Search Engines" task :p
Thorをご存知の方は多いと思いますが、Retterを作るにあたってとても便利に使えたので、手短に紹介したいと思います。 といってもだいたいはWikiに書いてあることしか書けないんですが、何しろ英語ですし、さわりだけでも伝えられたらなと思います。 Thor(トール、ソアー?)は便利なコマンドラインツールで、これを使うとコマンドラインオプションのパーズやサブコマンドごとのhelpをつくるなどの面倒な作業を簡単にこなせ、手早くビルドツールや実行可能なコマンドを作成できます。 特殊なDSLを使わずメソッドを定義することで処理を記述するため、テストしやすいという特徴もあります。 より便利なRakeとして使う 便利なRakeというのは主に引数とオプションの扱い方のことです。 Rakeは今も現役で便利に使っているんですが、例えば引数を渡したいときは環境変数として渡さないといけなくて、 これが割と面倒な
id:higepon に『rails.el も rails.vim も知らなかったよ!もっと早く知ってたら生産性が三倍になっていたのに!(一部誇張』と云われたので、rails.vim について ひげぽん OSとか作っちゃうかMona- - rails.el まとめ に沿った形で簡単に紹介したいと思います。 インストール 通常のインストール http://www.vim.org/scripts/script.php?script_id=1567 から rails.zip をダウンロードし、~/.vim/ 以下に展開します svn からのインストール vba (vim のパッケージングシステム)を使うので vim7 以上限定の方法ですが svn co http://svn.tpope.net/rails/vim/railsvim/ railsvim cd railsvim rake rails
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く