Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
Submit search
EN
Uploaded by
Tomoya Kawanishi
PDF, PPTX
1,204 views
Rake
about Rakefile, Rake of Ruby build tool
Technology
◦
Related topics:
Ruby on Rails Overview
•
Read more
1
Save
Share
Embed
Embed presentation
Download
Download as PDF, PPTX
1
/ 23
2
/ 23
3
/ 23
4
/ 23
5
/ 23
6
/ 23
7
/ 23
8
/ 23
9
/ 23
10
/ 23
11
/ 23
12
/ 23
13
/ 23
14
/ 23
15
/ 23
16
/ 23
17
/ 23
18
/ 23
19
/ 23
20
/ 23
21
/ 23
22
/ 23
23
/ 23
More Related Content
PDF
C#実装から見るDDD(ドメイン駆動設計)
by
Takuya Kawabe
PPTX
JJUG CCC 2015 Spring 「新人エンジニア奮闘記 - Javaって何?からwebサービスを公開するまで -」発表スライド
by
ToshiakiArai
PDF
入社1年目のプログラミング初心者がSpringを学ぶための手引き
by
土岐 孝平
PPTX
徳丸本に載っていないWebアプリケーションセキュリティ
by
Hiroshi Tokumaru
PDF
ドメイン駆動設計 ~ユーザー、モデル、エンジニアの新たな関係~
by
啓 杉本
PDF
ruby-ffiについてざっくり解説
by
ota42y
PDF
Laravel で API バージョニングを実装するなら
by
Shohei Okada
PPTX
Railsエンジニアのためのウェブセキュリティ入門
by
Hiroshi Tokumaru
C#実装から見るDDD(ドメイン駆動設計)
by
Takuya Kawabe
JJUG CCC 2015 Spring 「新人エンジニア奮闘記 - Javaって何?からwebサービスを公開するまで -」発表スライド
by
ToshiakiArai
入社1年目のプログラミング初心者がSpringを学ぶための手引き
by
土岐 孝平
徳丸本に載っていないWebアプリケーションセキュリティ
by
Hiroshi Tokumaru
ドメイン駆動設計 ~ユーザー、モデル、エンジニアの新たな関係~
by
啓 杉本
ruby-ffiについてざっくり解説
by
ota42y
Laravel で API バージョニングを実装するなら
by
Shohei Okada
Railsエンジニアのためのウェブセキュリティ入門
by
Hiroshi Tokumaru
What's hot
PDF
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
by
Koichiro Matsuoka
PDF
デキるプログラマだけが知っているコードレビュー7つの秘訣
by
Masahiro Nishimi
PDF
PHPからgoへの移行で分かったこと
by
gree_tech
PDF
ドメイン駆動設計 ( DDD ) をやってみよう
by
増田 亨
ODP
Strategy パターンと開放/閉鎖原則に見るデザインパターンの有用性
by
tomo_masakura
PDF
Laravelでfacadeを使わない開発
by
Kenjiro Kubota
PDF
Modeling in the Agile Age - JP
by
Kenji Hiranabe
PDF
Ruby で高速なプログラムを書く
by
mametter
PPTX
SSRF対策としてAmazonから発表されたIMDSv2の効果と破り方
by
Hiroshi Tokumaru
PPTX
博士課程進学というキャリアについて -博士課程への進学を検討している方へ向けて-
by
Yoshiharu Ikutani
PDF
CANVA AI プレゼンテーション資料.pdf
by
ShinYoshimura2
PDF
Laravel echo + vue.js + axiosで簡単チャットアプリ開発
by
宜浩 香月
PDF
アジャイルにモデリングは必要か
by
Hiromasa Oka
PDF
「DevSecOpsとは?」の一歩先 (CloudNative Days Tokyo 2021)
by
Masaya Tahara
PDF
現場で役立つシステム設計の原則
by
増田 亨
PDF
「ドメイン駆動設計」の複雑さに立ち向かう
by
増田 亨
PDF
工数把握のすすめ 〜WorkTimeプラグインの使い方〜
by
Tomohisa Kusukawa
PDF
View CustomizeからREST APIを使用する
by
Asa Morino
PDF
Session,Cookies and Authentication
by
Knoldus Inc.
PPTX
バックログとタスクをインポート・エクスポート Team Foundation Server と Excel・Project との連携
by
慎一 古賀
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
by
Koichiro Matsuoka
デキるプログラマだけが知っているコードレビュー7つの秘訣
by
Masahiro Nishimi
PHPからgoへの移行で分かったこと
by
gree_tech
ドメイン駆動設計 ( DDD ) をやってみよう
by
増田 亨
Strategy パターンと開放/閉鎖原則に見るデザインパターンの有用性
by
tomo_masakura
Laravelでfacadeを使わない開発
by
Kenjiro Kubota
Modeling in the Agile Age - JP
by
Kenji Hiranabe
Ruby で高速なプログラムを書く
by
mametter
SSRF対策としてAmazonから発表されたIMDSv2の効果と破り方
by
Hiroshi Tokumaru
博士課程進学というキャリアについて -博士課程への進学を検討している方へ向けて-
by
Yoshiharu Ikutani
CANVA AI プレゼンテーション資料.pdf
by
ShinYoshimura2
Laravel echo + vue.js + axiosで簡単チャットアプリ開発
by
宜浩 香月
アジャイルにモデリングは必要か
by
Hiromasa Oka
「DevSecOpsとは?」の一歩先 (CloudNative Days Tokyo 2021)
by
Masaya Tahara
現場で役立つシステム設計の原則
by
増田 亨
「ドメイン駆動設計」の複雑さに立ち向かう
by
増田 亨
工数把握のすすめ 〜WorkTimeプラグインの使い方〜
by
Tomohisa Kusukawa
View CustomizeからREST APIを使用する
by
Asa Morino
Session,Cookies and Authentication
by
Knoldus Inc.
バックログとタスクをインポート・エクスポート Team Foundation Server と Excel・Project との連携
by
慎一 古賀
Similar to Rake
PDF
Ruby での外部コマンドの実行について
by
Tomoya Kawanishi
PPT
いまさら聞けないRake入門
by
Tomoya Kawanishi
PDF
Redmineを使ってみよう
by
mrgoofy33 .
PDF
RubyのDir、File、IO について
by
Tomoya Kawanishi
PDF
【入門】3時間でアプリ公開!ゼロからのプログラミングRails講座
by
DIVE INTO CODE Corp.
PDF
Sinatraでwebアプリケーション開発を学ぶ
by
Hiroshi Oyamada
PDF
ゼロからのプログラミングRails講座 Codeanywhere版
by
DIVE INTO CODE Corp.
PPTX
Ruby on Rails を用いたWEBアプリケーションの開発
by
Koichi Shimozono
PDF
nomlab_okayamaruby_slide
by
nomlab
PDF
ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発
by
emasaka
PDF
Cookpad 17 day Tech internship 2017 言語処理系入門 Rubyをコンパイルしよう
by
Koichi Sasada
ODP
とっとるびー(2回目)発表資料
by
ionis111
PDF
名古屋Ruby会議02 LT:Ruby中級への道
by
Shigeru UCHIYAMA
PPTX
一人でも出来るコードリーディング
by
Taiyo Akashi
PDF
Rails vim easy
by
Naoki Takaesu
PPT
JRuby on Rails
by
Yoichiro Tanaka
PDF
rake:money拡大版@Ruby会議2010 ~Rubyエンジニアと企業の幸せな関係~
by
Ouka Yuka
PDF
my unite plugins
by
basyura
PDF
What's Cooking In Ruby 2.7
by
Akinori Musha
KEY
OSC 2012 HIROSHIMA
by
Tomohiko Himura
Ruby での外部コマンドの実行について
by
Tomoya Kawanishi
いまさら聞けないRake入門
by
Tomoya Kawanishi
Redmineを使ってみよう
by
mrgoofy33 .
RubyのDir、File、IO について
by
Tomoya Kawanishi
【入門】3時間でアプリ公開!ゼロからのプログラミングRails講座
by
DIVE INTO CODE Corp.
Sinatraでwebアプリケーション開発を学ぶ
by
Hiroshi Oyamada
ゼロからのプログラミングRails講座 Codeanywhere版
by
DIVE INTO CODE Corp.
Ruby on Rails を用いたWEBアプリケーションの開発
by
Koichi Shimozono
nomlab_okayamaruby_slide
by
nomlab
ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発
by
emasaka
Cookpad 17 day Tech internship 2017 言語処理系入門 Rubyをコンパイルしよう
by
Koichi Sasada
とっとるびー(2回目)発表資料
by
ionis111
名古屋Ruby会議02 LT:Ruby中級への道
by
Shigeru UCHIYAMA
一人でも出来るコードリーディング
by
Taiyo Akashi
Rails vim easy
by
Naoki Takaesu
JRuby on Rails
by
Yoichiro Tanaka
rake:money拡大版@Ruby会議2010 ~Rubyエンジニアと企業の幸せな関係~
by
Ouka Yuka
my unite plugins
by
basyura
What's Cooking In Ruby 2.7
by
Akinori Musha
OSC 2012 HIROSHIMA
by
Tomohiko Himura
More from Tomoya Kawanishi
PDF
PostgreSQL のイケてるテクニック7選
by
Tomoya Kawanishi
PDF
Ruby のワンライナーについて
by
Tomoya Kawanishi
PDF
Ruby on Rails のキャッシュ機構について
by
Tomoya Kawanishi
PDF
AWS のコスト管理をちゃんとしたくてやったこと
by
Tomoya Kawanishi
PDF
RubyGems と Bundler について
by
Tomoya Kawanishi
PDF
Ruby の文字列について
by
Tomoya Kawanishi
PDF
Ruby の正規表現について
by
Tomoya Kawanishi
PDF
Ruby on Rails プロジェクトでの他言語エコシステムとの共存方法
by
Tomoya Kawanishi
PDF
HTTPと Webクローリングについて
by
Tomoya Kawanishi
PDF
Ruby初心者からよく質問されること
by
Tomoya Kawanishi
PDF
ENECHANGE社での Scout APM 利用事例
by
Tomoya Kawanishi
PDF
Ruby の制御構造とリテラルについて
by
Tomoya Kawanishi
PDF
RubyGems と Bundler について
by
Tomoya Kawanishi
PDF
Active Support のコア拡張機能について
by
Tomoya Kawanishi
PDF
Ruby の String のメソッドについて
by
Tomoya Kawanishi
PDF
Active record query interface
by
Tomoya Kawanishi
PDF
Thread の利用事例紹介
by
Tomoya Kawanishi
PDF
Ruby ビジネス創出展 Ruby初心者向けプログラミングセミナー
by
Tomoya Kawanishi
PDF
エンジニア転職のノウハウ
by
Tomoya Kawanishi
PPTX
英単語の覚え方
by
Tomoya Kawanishi
PostgreSQL のイケてるテクニック7選
by
Tomoya Kawanishi
Ruby のワンライナーについて
by
Tomoya Kawanishi
Ruby on Rails のキャッシュ機構について
by
Tomoya Kawanishi
AWS のコスト管理をちゃんとしたくてやったこと
by
Tomoya Kawanishi
RubyGems と Bundler について
by
Tomoya Kawanishi
Ruby の文字列について
by
Tomoya Kawanishi
Ruby の正規表現について
by
Tomoya Kawanishi
Ruby on Rails プロジェクトでの他言語エコシステムとの共存方法
by
Tomoya Kawanishi
HTTPと Webクローリングについて
by
Tomoya Kawanishi
Ruby初心者からよく質問されること
by
Tomoya Kawanishi
ENECHANGE社での Scout APM 利用事例
by
Tomoya Kawanishi
Ruby の制御構造とリテラルについて
by
Tomoya Kawanishi
RubyGems と Bundler について
by
Tomoya Kawanishi
Active Support のコア拡張機能について
by
Tomoya Kawanishi
Ruby の String のメソッドについて
by
Tomoya Kawanishi
Active record query interface
by
Tomoya Kawanishi
Thread の利用事例紹介
by
Tomoya Kawanishi
Ruby ビジネス創出展 Ruby初心者向けプログラミングセミナー
by
Tomoya Kawanishi
エンジニア転職のノウハウ
by
Tomoya Kawanishi
英単語の覚え方
by
Tomoya Kawanishi
Recently uploaded
PDF
第21回 Gen AI 勉強会「NotebookLMで60ページ超の スライドを作成してみた」
by
嶋 是一 (Yoshikazu SHIMA)
PDF
2025→2026宙畑ゆく年くる年レポート_100社を超える企業アンケート総まとめ!!_企業まとめ_1229_3版
by
sorabatake
PDF
Starlink Direct-to-Cell (D2C) 技術の概要と将来の展望
by
CRI Japan, Inc.
PDF
ST2024_PM1_2_Case_study_of_local_newspaper_company.pdf
by
akipii ogaoga
PDF
PMBOK 7th Edition Project Management Process Scrum
by
akipii ogaoga
PDF
Team Topology Adaptive Organizational Design for Rapid Delivery of Valuable S...
by
akipii ogaoga
PDF
自転車ユーザ参加型路面画像センシングによる点字ブロック検出における性能向上方法の模索 (20260123 SeMI研)
by
Yuto Matsuda
PDF
PMBOK 7th Edition_Project Management Context Diagram
by
akipii ogaoga
PDF
100年後の知財業界-生成AIスライドアドリブプレゼン イーパテントYouTube配信
by
e-Patent Co., Ltd.
PDF
FY2025 IT Strategist Afternoon I Question-1 Balanced Scorecard
by
akipii ogaoga
PDF
PMBOK 7th Edition_Project Management Process_WF Type Development
by
akipii ogaoga
PDF
Reiwa 7 IT Strategist Afternoon I Question-1 3C Analysis
by
akipii ogaoga
PDF
Reiwa 7 IT Strategist Afternoon I Question-1 Ansoff's Growth Vector
by
akipii ogaoga
第21回 Gen AI 勉強会「NotebookLMで60ページ超の スライドを作成してみた」
by
嶋 是一 (Yoshikazu SHIMA)
2025→2026宙畑ゆく年くる年レポート_100社を超える企業アンケート総まとめ!!_企業まとめ_1229_3版
by
sorabatake
Starlink Direct-to-Cell (D2C) 技術の概要と将来の展望
by
CRI Japan, Inc.
ST2024_PM1_2_Case_study_of_local_newspaper_company.pdf
by
akipii ogaoga
PMBOK 7th Edition Project Management Process Scrum
by
akipii ogaoga
Team Topology Adaptive Organizational Design for Rapid Delivery of Valuable S...
by
akipii ogaoga
自転車ユーザ参加型路面画像センシングによる点字ブロック検出における性能向上方法の模索 (20260123 SeMI研)
by
Yuto Matsuda
PMBOK 7th Edition_Project Management Context Diagram
by
akipii ogaoga
100年後の知財業界-生成AIスライドアドリブプレゼン イーパテントYouTube配信
by
e-Patent Co., Ltd.
FY2025 IT Strategist Afternoon I Question-1 Balanced Scorecard
by
akipii ogaoga
PMBOK 7th Edition_Project Management Process_WF Type Development
by
akipii ogaoga
Reiwa 7 IT Strategist Afternoon I Question-1 3C Analysis
by
akipii ogaoga
Reiwa 7 IT Strategist Afternoon I Question-1 Ansoff's Growth Vector
by
akipii ogaoga
Rake
1.
Rakeについて 2018/12/12 大手町.rb #12
2.
大手町.rb #12 「Rakeについて」 1自己紹介 Tomoya
Kawanishi a.k.a. @cuzic エネチェンジ株式会社 チーフエンジニア 電力会社、ガス会社を切り替えるなら、エネチェンジ経由で! 一般家庭も!法人も! Ruby関西の中の人 発表者として登壇くださる方、あとで声かけください。 大手町.rb の中の人 毎月 大手町.rb の開催を予定 東京駅、各線大手町駅から直結! Ruby の初級者がメインターゲット
3.
大手町.rb #12 「Rakeについて」 Disclaimer 大手町.rb
は祝!12回! 人数がとても増えてきました! 大手町.rb は(比較的)初級者向けの勉強会 とはいえ、初級者向けのままだと、ネタ切れしちゃう 同じネタをリピートするか、レベルアップするか。 大手町.rb はレベルアップしていく方向! 今のオーディエンスを大切にしていく! 2
4.
大手町.rb #12 「Rakeについて」 今日のテーマ Rake
について Ruby on Rails でも標準的に使われている とはいえ、時間をとって学ぶことがあまりない というのも事実 ドキュメントを熟読すればいいのですが、 なかなか上から読むのは大変です。 今日は一緒に学んでいきましょう 3
5.
大手町.rb #12 「Rakeについて」 ビルドツールの主な使い方 ビルド 定義されたルールに従った処理(コンパイルなど) ex)
*.c を *.o にコンパイル 依存関係の処理があるときに便利 ex) hello.c と hello.h のどちらかが更新されていた場合 コンパイルを実行し、 hello.o を再作成 一部を書き換えたときに、必要な作業のみを実施可能 ex) hello.c だけが変更がある場合は、hello.o を再作成 タスク 事前に登録した任意の作業を実施 Rails での例 データベース処理(マイグレートなど) テスト キャッシュやログなどのクリア ドキュメント生成など 4
6.
大手町.rb #12 「Rakeについて」 5ビルドツールいろいろ 歴史的に数多くのビルドツールが存在 Make
: 伝統的なビルドツール 単語のリストや展開などの概念がカオス Ant : Java で多く使われる あの XML をAntエディターなしで作る気にはならない Maven :ビルドを含めたプロジェクト管理ツール Java向け。Antよりはいいけど、XMLが、ね。。。 Gradle : Ant や Maven の考え方を引き継いだビルドツール。 Groovy を使った内部 DSL Rake : Ruby DSL として書かれたビルドツール なんでもでき、読みやすく、書きやすい。 Grunt : JavaScript 向けのビルドツール。 JSON を使って設定を書いて実行する。 Gulp : JavaScript 向けのビルドツール。pipe を使って タスクを順番に処理する。
7.
大手町.rb #12 「Rakeについて」 Q.
Rake クイズ 次の 2つの実行結果の違いを説明せよ 6 > cat build.rb system <<SCRIPT ./hello ./world SCRIPT > ruby build.rb (ヒント) ・ Kernel#system は 任意のコマンドを実行するための組み込みメソッド。 ・ 複数行書かれれば、1行ずつ順に実行される ・ Rakefile では、引数なしで実行すると、 ① カレントディレクトリの Rakefile を探し、 ② その中の :default タスクを実行する ・ Rakefile では task タスク名 do 処理内容 end でタスクを定義できる ・ sh は任意のコマンドを実行する Rake が提供するメソッド > cat Rakefile task :default do sh "./hello" sh "./world" end > rake
8.
大手町.rb #12 「Rakeについて」 A.
Rakeクイズ 解答 (1) 表示内容の違い (2)失敗時に abort するかの違い 7 > ruby build.rb hello world > rake (in /home/~ ) ./hello hello ./world world > cat ./hello puts "hello"; exit 1 > ruby build.rb hello world 1行目のexit code が ゼロ以外でも 2行目が実行される > rake (in /home/~ ) ./hello hello rake aborted! Command failed with ~~ 1行目のexit code が ゼロ以外の場合は、 abort し、以降は実行されない 実行ディレクトリを表示 ./hello : 1行目のコマンド hello : 1行目の実行結果 ./world : 2行目のコマンド world : 2行目の実行結果
9.
大手町.rb #12 「Rakeについて」 A.
Rakeクイズ 解説 (1) 表示内容の違い Rake を利用すると、豊富なデバッグメッセージを利用できます。 実行したコマンド内容が逐次確認できて便利です。なお、 とすると、実行コマンドの表示を抑止できます。 (2)実行可否の違い Rake の sh は、失敗時に自動的にエラーメッセージを表示して スクリプトの処理が異常終了し、それ以降の処理を実行しません。 この動作は、多くのバッチ処理で期待される動作です。 シェルスクリプトや system コマンドなどでは本来しなければ ならなかった異常終了させることを忘れ、困った結果になったりします。 しかしながら、Rake の sh を使えば異常終了を忘れることはありません。 8 > rake –q > rake –sまたは
10.
大手町.rb #12 「Rakeについて」 デフォルトと、タスク task
: 新しい Rake タスクを定義できる task の中で default を指定することで、引数なしで 実行したときのデフォルト動作を指定できる ruby : Rake の中で Ruby コマンドを実行できる 9 task default: %w[test] task :test do ruby "test/unittest.rb" end > rake > rake test # 上と同じ動作になる Rakefile
11.
大手町.rb #12 「Rakeについて」 Rake
のコマンドライン 10 $ rake --help -C, --classic-namespace トップレベルに Task, FileTask を定義します。 過去との互換性のためのオプションです。 -D, --describe [PATTERN] パターンにマッチしたタスクの詳細を表示して終了します。 パターンは省略可能です。 -n, --dry-run アクションを実行せずにタスクを実行します。 -e, --execute CODE Ruby のコードを実行して終了します。 -p, --execute-print CODE Ruby のコードを実行して結果を表示して終了します。 -E, --execute-continue CODE Ruby のコードを実行してから、タスクを実行します。 -I, --libdir LIBDIR ロードパスに LIBDIR を含めます。 -P, --prereqs タスクの依存関係を表示して終了します。 -q, --quiet 標準出力にログメッセージを表示しません。 -f, --rakefile [FILE] FILE を Rakefile として使用します。 -R, --rakelibdir RAKELIBDIR RAKELIBDIR にある *.rake ファイルを自動的にインポートします。 --rakelib デフォルトは rakelib です。 -r, --require MODULE Rakefile を実行する前に MODULE を require します。 --rules ルールの解決を追跡します。 -N, --no-search, --nosearch 親ディレクトリの Rakefile を検索しません。 -s, --silent --quiet に似ていますが、ディレクトリも表示しません。 -g, --system システム全体の Rakefile を使用します。('~/.rake/*.rake') -G, --no-system, --nosystem システム全体の Rakefile を使用しません。 -T, --tasks [PATTERN] パターンにマッチしたタスクの短い説明を表示して終了します。 パターンは省略可能です。 -t, --trace 全てのバックトレースを表示します。 -v, --verbose 標準出力にログメッセージを表示します (デフォルト)。 -V, --version このプログラムのバージョンを表示します。 -h, -H, --help このメッセージを表示します。
12.
大手町.rb #12 「Rakeについて」 依存関係の定義と
file タスク file: ファイルを生成するためのタスクを定義する 依存関係があってもなくてもいい 依存関係があれば、ハッシュ形式で記述する タスクのブロック引数 下記の t は Rake::Task クラスのオブジェクト t.name は生成しようとしているファイル t.sources は依存関係のあるファイルの配列 11 postcode_csv = Rails.root + "lib/assets/KEN_ALL_ROME.csv" file postcode_csv do # 依存関係なし sh "aws s3 cp s3://なんとかかんとか/KEN_ALL_ROME.csv #{postcode_csv}" end postcode_dbm = Rails.root + "lib/assets/postcode.dbm" file postcode_dbm => postcode_csv do |t| # postcode_dbm は postcode_csv に依存。 postcode_csv がなければ自動的に取得。 ruby "lib/postcode_csv2dbm.rb #{t.sources.first} #{t.name}" end Rakefile
13.
大手町.rb #12 「Rakeについて」 rule
: 一定のルールでファイルを変換 rule "ターゲットの拡張子" => "依存ファイルの拡張子" 拡張子で、やりたいビルド内容が決まる場合にベンリ Rake は Ruby でできることはなんでもできる def … end で定義したメソッドを呼び出すこともできる t.source は最初の依存ファイル 12 def sassc(target, source) environment = Enechange::Application.assets context = environment.context_class.new( environment: environment, name: '', filename: '', metadata: {} ) options = {context: context, environment: environment} engine = Sass::Engine.for_file(source, sprockets: options) IO.write(target, engine.render) end rule '.css' => ['.scss'] do |t| # rule sassc t.name, t.source end
14.
大手町.rb #12 「Rakeについて」 rule
の上級編 rule の target 側は正規表現を指定することもできる 正規表現にマッチする場合にそのルールが適用される rule の sources で Proc を指定することもできる target のファイル名から複雑なロジックで、 依存するファイル名を導出できる 13 CSS_DIR = "css" SASS_DIR = "scss" def css_to_scss Proc.new do |filename| filename.sub(/^#{CSS_DIR}/, SASS_DIR).sub(/¥.css$/, '.scss') end end rule %r{^#{CSS_DIR}/.*¥.css$} => css_to_scss do |t| sassc t.name, t.source end
15.
大手町.rb #12 「Rakeについて」 rule
の上級編(おまけ) rule の sources のところでは、 Proc オブジェクトだけでなく Method オブジェクトを 指定することもできる method メソッドを使うことで、より簡潔に書ける 14 CSS_DIR = "css" SASS_DIR = "scss" def css_to_scss(filename) filename.sub(/^#{CSS_DIR}/, SASS_DIR).sub(/¥.css$/, '.scss') end rule %r{^#{CSS_DIR}/.*¥.css$} => method(:css_to_scss) do |t| sassc t.name, t.source end
16.
大手町.rb #12 「Rakeについて」 ディレクトリタスクなど ディレクトリタスクを使うと、ディレクトリの作成を明示不要 ディレクトリを必要とするタスクについては、依存タスクに記載しておく ない場合は作成するし、すでにある場合は何もしない 依存関係にディレクトリタスクを含めることで、 ないときはディレクトリを作成する処理が簡潔に書ける 15 CSS_DIR
= "css" SASS_DIR = "scss" directory SASS_DIR rule %r{^#{CSS_DIR}/.*¥.css$} => [css_to_scss, SASS_DIR] do |t| sassc t.name, t.source end
17.
大手町.rb #12 「Rakeについて」 クリーニング 作成したファイルを一度削除したいことはままある 依存関係が複雑で、更新日時だけではうまく解決できないとき 不要な一時ファイルを削除したいとき 疲れてきて、コーヒー休憩する口実が欲しいとき require
‘rake/clean’ で clean (一時ファイル用)と clobber (すべてのファイル用)の2つのタスクを利用可能 16 require 'rake/clean' # clean で消すものに加え coverage と specdoc を削除 CLOBBER.include 'coverage', 'specdoc' # pkg と tmp を削除 CLEAN.include 'pkg', 'tmp'
18.
大手町.rb #12 「Rakeについて」 namespace、FileList、
invoke Rake のタスクを分類したいときはnamespace を使う タスクに “-” を含めることもできる(例: :"create-all") FileList はファイル名(文字列)の配列のように扱える Rake::Task[タスク名].invoke でRake タスクを実行できる 依存関係を含めて実行する Rake::Task[タスク名].execute だと、依存関係を無視して実行 17 namespace :css do task :"create-all" do FileList["#{CSS_DIR}/**/*.css"].each do |filename| Rake::Task[filename].invoke end end end > rake css:create-all
19.
大手町.rb #12 「Rakeについて」 Rake
で引数 環境変数を使う方法 タスク引数を使う方法 18 task :rails_env do puts "RAILS_ENV=#{ENV["RAILS_ENV"]}" end > rake rails_env RAILS_ENV=development task :show_args, ['arg1', 'arg2'] do |task, args| p task #=> <Rake::Task show_args => (snip)> p args end > rake show_args[hoge,huga] <Rake::Task show_args => []> #<Rake::TaskArguments arg1: hoge, arg2: huga>
20.
大手町.rb #12 「Rakeについて」 Rake
の 注意点 ブロックには do ~ end を使う Ruby の文法上の制限で { } が期待どおり動作しない 19 下記の回避方法はあるが、DSL 的でないため、通常は do ~ end を使うことが好まれる > cat Rakefile task :default {|t| puts “Hello, World!” } > rake (in ~) rake aborted! ~: syntax error, unexpected '{', expecting $end (See full trace by running task with --trace) > cat Rakefile task(:default) {|t| puts “Hello, World!” }
21.
大手町.rb #12 「Rakeについて」 発展的な話題 下記は興味があるなら自分で調べてみましょう multitask 複数のタスクを並列実行する rake/gempackagetask Gem
のパッケージを作成するためのタスク rake/packagetask tar.gz, zip などのパッケージを作成するためのタスク rake/rdoctask rdoc のドキュメンテーションを作成するタスク rake/testtask ユニットテストを実行するタスクを作成する 20
22.
大手町.rb #12 「Rakeについて」 まとめ Rake
を使うと、エラー処理を記述不要で楽 sh を使えば、エラー時の処理停止が自動的に行われる 定義されたルールから依存関係を自動解決可能 コンパイル、テキスト処理、他多数のコマンドに応用可能 複雑なタスクも記述可能 依存ファイルの推定ロジックのカスタマイズ タスク処理中での別のタスクの呼び出し 任意の Ruby スクリプトも記述可能 ファイル名を動的に取得可能 標準的なRake タスクも require により用意可能 クリーニング 21
23.
ご清聴ありがとう ございました
Download