haskell split カンマ区切りの文字列をカンマで区切って配列にする方法


haskell で ruby の split や PHP の explode にあたるようなものを考えました。

背景

haskell を使ったことがなく、使う場面もなかなかないので CodeIQ で使ってみようと思ったものの、 「入力を受け取るにはどうすればいいんだ?」という疑問にぶちあたり、 split する方法を考えました。

Haskell には Data.List.Split モジュール内 に splitOn という関数があるのですが、 CodeIQ でコンパイルに失敗しました。 Ideone でも コンパイルに失敗しました。 ほかにも関数はあるそうなのですが、うまくいかなかったので自分で考えることにしました。

カンマで分割する方法

下のようになりました。 この方法だと カンマ でのみ区切ります。

任意のデリミタで分割する方法

任意のデリミタを指定できるようにしてみました。 1文字のデリミタでのみ分割可能です。


CakePHP3 rails のように部分テンプレートを使用する方法


Rails を真似て作られたといわれている CakePHP で、 部分テンプレートの使用例を説明します。 英語ドキュメントを見ると正しく設定できるのですが、 日本語ドキュメントは古い状態なので、日本語ドキュメントを見ていると解決できません。

続きを読む CakePHP3 rails のように部分テンプレートを使用する方法

Rails seed から task を実行したときの方法


Rails の seeds.rb で task を実行したいとのことで、 やり方を調べました。

実践 Ruby on Rails
実践 Ruby on Rails 4 本格 Web プログラミング

環境

  • Ruby 2.2.2p95
  • Rails 4.1.8
  • Rake 10.4.2

rails g task sample shot とコマンドを実行して、タスクを作っておきます。 下のように。

タスク自体は bundle exec rake sample:shot で実行できます。 これを更に bundle exec rake db:seed とやったときにも実行されるようにするのが今回のゴールです。 おそらく、 rails のコード内から task を実行するのも似たような感じでいけると思います。

解決策

seeds.rb に下の記述を追加します。

環境 (test, development, production) は、 rake db:seed で設定されたものが引き継がれます。 上では SOMETHING'value' という値を設定しています。 rake db:fixture:load FIXTURES=xxxx で設定するようなやつです。


A Life Summary of an Gypsy