こんにちは、現役沖縄フリーランスエンジニアのmah(MaLanka)です。
このブログでは、
僕がIT未経験から約1年でフリーランスエンジニアになるまでの過程、
ノウハウなどを書いていきます。
今回は、
- 【Rails】ymlファイルの中でerbを使い、動的に値を取得してrakeタスクの引数にする
について書いていきます。
ymlファイルを引数にとるrakeタスクで困ったので備忘録に残しておきます。
【Rails】ymlファイルの中でerbを使い、動的に値を取得してrakeタスクの引数にする
困ったこと
ymlファイルの中でerbを使い、
動的に値を取得してrakeタスクの引数にしようとしていた。
が、
erbを使った部分が文字列のままで渡ってきて、
上手くいかなかった。
ymlファイル例は下記。
# test.yml.erb - id: <%= User.find_by(name: 'mah') %> age: 18 *** こういう値が欲しいが、 #=> [{ id: 1, age: 18 }] # こうなってしまう #=> [{ id: <%= User.find_by(name: 'mah') %>, age: 18 }]
rakeタスク例は下記。
# test.rake ***File処理部分のみ記載*** # args.yamlは対象のymlファイルのパス File.open(args.yaml, 'r') do |file_obj| # TODO: ここで上手く読み込めていない yaml = YAML.load(file_obj) # rakeタスクの引数に「yaml」を指定して実行 end
結論
ERB.newを使う。
# test.rake ***File処理部分のみ記載*** # args.yamlは対象のymlファイルのパス File.open(args.yaml, 'r') do |file_obj| yaml = case File.extname(file_obj) when '.erb' # TODO: .erbのファイルを読み込む時はこうする YAML.load(ERB.new(file_obj.read).result) else YAML.load(file_obj) end # rakeタスクの引数に「yaml」を指定して実行 end
これで、
上手くerbとして認識され、
[{ id: 1, age: 18 }]
のような値が返ってきたので、
rakeタスクで使えるようになりました。
- ERBリファレンス
以上です。
RailsやRubyを学びたい人へ
RailsやRubyを学びたい人は、
RailsHack(レイルズハック)という、
最近できた新しいプログラミングスクール(今なら通常価格69,800円が、早期割で29,800円!)か、
Udemy で下記のコースを受講すると良いです★
✅1. フルスタックエンジニアが教える 即戦力Railsエンジニア養成講座
✅2. 【はむ式】ハンズオンで学ぶRuby on Rails 6【Dockerにも触れられる】 <- おすすめ。ハムさんはReactやTypeScriptの教材も非常に丁寧。
✅3. はじめてのRuby on Rails入門-RubyとRailsを基礎から学びWebアプリケーションをネットに公開しよう
また、
Udemy は定期的にセールをやっていますし(90%OFFとかもザラ)、
「30日間なら返金できる」ので、
満足できなかった時でも安心です。
【公式】RailsHack(レイルズハック)
【公式】Udemyで学んでみる
最後に
下記の表に、
フリーランスエンジニア向けの人気エージェントをまとめてみました。
エージェント選びで悩んでいる方は是非参考にしてみてくださいね★
エージェント | 詳細 | 最高単価/月 | 設立 |
---|---|---|---|
ココナラテック(旧:フリエン)(furien) | 評判をチェック | 180万円/月 | 2011年 |
ギークスジョブ | 評判をチェック | 180万円/月 | 2011年 |
フォスターフリーランス | 評判をチェック | 230万円/月 | 1996年 |
pe-bank(pebank) | 評判をチェック | 200万円/月 | 1989年 |
Midworks(ミッドワークス) | 評判をチェック | 200万円/月 | 2013年 |
レバテックフリーランス | 評判をチェック | 140万円/月 | 2005年 |
あわせて読みたい