woshidan's blog

あいとゆうきとITと、とっておきの話。

Ruby

Rackの概要、RackミドルウェアとRackアプリケーションの違いについて

この記事はRubyアドベントカレンダーの14日目の記事です。 最近Rackにさわることがあったのでこの記事では Rackの概要 RackミドルウェアとRackアプリケーションの違い についてまとめます。 Rack概要 RackはWebサーバとRuby及びRubyのフレームワークとの間で…

mysql2のgemのインストール時にchecking for mysql_query() in -lmysqlclient... no が出ていたらC言語版のMySQLのクライアントライブラリがない

mysql2のgemをインストールするときに、 checking for mysql_query() in -lmysqlclient... no ... のエラーが出て失敗する場合、C言語版のMySQLのクライアントライブラリがないです。 なので、たとえばMac OS X(10.11.6)の場合、 $ brew mysql でC言語版のMy…

RackがよくわからなかったのでRackアプリケーションをUnicornで動かしてnginxからリクエストを転送してみた

この記事はRuby Advent Calendar 2017の23日目の記事です。 はじめに Webアプリケーションフレームワーク(WAF)といえば、 薄いアプリケーションをサクッと書くのに適しているsinatra なんでもあり気味なRuby on Rails など、rubyで有名なものだけでもぱっと…

ERBとCSVを使って簡単な自分用ドリルを作る

最近シェルの勉強をしたいんですが、以前SQLを勉強した時のように基本的なシェルを反復して書くのが一番では? と思って、ドリルのようなものが欲しくなりました。 そこで、CSVにお題とお題の答えを書き連ねたらアコーディオンで答えを出したり隠したりしてく…

RubyとrbenvとgemとBundlerと環境ごとのgem

いまさらですが、こないだ会社でRailsに携わるもののたしなみとしてnokogiriのインストールにはまったときに先輩に教えていただいたときのメモ。 rbenvでRubyのバージョンを管理している場合、local*1やglobal*2を管理している際、systemと表記されているの…

irbの実行結果の出力が非常に長い場合、途中からカットしたい

最近しばしば行う作業のログが、おそらく人間の目には確認できないほど長く、また件数的におそらくログから確認を行うことはしない*1ということもあり、じゃあ使わないログはある程度短くしたいですね、ということで調べました。 具体的には、属性がたくさん…

Mac OSにmecabをインストールしてnattoを利用してrubyからmecabを叩いてみる

ちょっとある程度の量の短文から単語の出現頻度を抽出する必要があり、さわったのでメモ。 Mac OSにHomebrewでmecabをインストールする Homebrewを通して入れます*1。 /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/m…

crontabの内容を管理するgem whenever の使い方を復習した

DSLっぽいrubyを使ってcrontabの内容を管理するgem whenever の使い方を復習しました。 本家GitHub https://github.com/javan/whenever # Gemfile gem 'whenever', '= 0.9.4', :require => false $ wheneverize . # [add] writing `./config/schedule.rb' [d…

Effective Rubyを読みました

会社の上の方の人から読んだ方が良いとお勧めされたので、4月中ちょこちょこ読んでました。 いわゆるRailserなので、なかなか難しくて山のように付箋が消費されてしまいました。 各章ごとの感想をメモしておきます。 第一章 Railserなので、 Array#compactで…

FactoryGirlとfixturesでテストにかかる時間を比べてみた

7 Reasons I'm Sticking With Minitest and Fixtures in Rails | Brandon Hilkert この辺の記事にFactoryGirlよりfixturesの方が早くない? と書いてあったので、ちょっと単純なテストを200個くらい用意して、 どれくらい速くなるものかテストしてみました。…

ActiveRecord::Baseのサブクラスでhas_manyと書いたとき

なんかいまいちだけど、置いとこう。。 まとめ has_manyメソッドを書くと、has_manyメソッドに与えたパラメータを元に、 has_manyのアソシエーションのメソッドのマクロ名などが登録されたクラスのインスタンスをFactoryPatternっぽい感じで作り、 そのイン…

Gemfileに書いてあるgemのコードはどこから取得しているのか

Bundlerの動作を少し詳しく調べてみようと思ったのですが、その前にGemfileの内容について 少し調べました。 内容 Gemfileとは Gemfileに書いてあるgemのコードはどこから取得しているのか global source lines sourceオプション pathオプション gitオプショ…

さくらVPSのサーバ設定作業まとめました。(CentOS+Apache+Passenger+MySQL+Rails4+capistrano3)

書いても書いても終わらないから、もう終わらないかと若干思いましたが、無事終わりました。 とりあえず、勉強してみようという意図もあって、さくらVPSを借りてRailsが動く環境を設定してみた作業の記録をまとめました。 完結に手順をまとめた良記事は既に…

CentOSにRuby関係のソフトウェアをインストール

見返していて思ったんですが、Passengerを入れるにはrubyを入れておかないと行けないので、ここの作業はPhusion Passengerの作業より先にやる必要がありますね(おい)。半月前は(今よりもっと)、エラーメッセージが出るたびに、CentOSに言われた通りに作業し…

Apacheが動いているのにWEBrickも動かしちゃった時のassetsの話2

もう、収集つかなかったし失踪したいな、と思っていました。(あと、「サーバ構築の実際が分かるApache実践 運用/管理」にVirtualHostについてほとんど記述が無かったのでおこ。 キャッシュとかパフォーマンスのチューニングとかネットに載ってなさそうなこと…

Apacheが動いているのにWEBrickも動かしちゃった時のassetsの話1

Apache+Phusion PassengerでRailsがすでに動いているのに、ポート番号3000でWEBrickをわざわざ起動させてしまいassetsが取得できなくて焦った時の小話。そのときは、assetsが部分的に読み込めたり読み込めなかったりしたもので意味が分からなかったです。 ま…

HerokuでRailsでないRubyのwebのアプリケーションを動作させたい

具体的にはsinatraとか. APIの説明見てたら、さくっとsinatra使えますよね、設定ファイル、うちのサービスから見えるようにherokuとかのサーバーに上げといてね、という感じに書いてあったところ、案の定、詰みかけたので、メモ。 そーいえばsinatra爆速、と…

htmlのソースコードから要素・属性・値を抜き出す正規表現を作るスクリプト

背景 静的なhtmlはそもそもテストにかけるものではない気がするのですが、 お客様からかなーり細かくレギュレーションや誤字脱字のチェックを言われているので、 この確認作業いっそ自動化しちゃいたい。 しちゃってください、という感じのお仕事をしていま…

今日からはじめよう、正規表現 in Ruby

正規表現についてじっくりぐだぐだ煮込んで書きました。 初心者向けで、言語はRubyです。 お品書き 今日からはじめよう、正規表現 in Ruby(基本のき〜文字クラス編) http://woshidan.hatenablog.com/entry/2014/04/20/101439 今日からはじめよう、正規表現 i…

今日からはじめよう、正規表現 in Ruby (論理式とオプション編)

論理式とオプション 今日は最後に論理式とオプションについてまとめて終わりにしましょう。 初心者:え、文字コードは扱わないのですか? 正規表現の文字コードはRubyの場合、オプションで指定が出来るけど、 大変申し訳ない話、日本語の正規表現のエンコー…

今日からはじめよう、正規表現 in Ruby (()を使おう(キャプチャ・グループ化)編)

正規表現の中の() ()はキャプチャとグループ化に使用することができます。 先にキャプチャについてやりましょう。 キャプチャ さて、キャプチャについてなんですが…… 丸括弧 ( ) によってキャプチャをすることができます。 括弧に囲まれた部分正規表現にマッ…

今日からはじめよう、正規表現 in Ruby (量指定子編)

量指定子で○○〜○○まで、の〜〜を取得する 今日は量指定子についてやります。 たとえば英数字が何文字か続いた後 (英数字以外も来るけれど)に @マークが来るというのを正規表現で表すときとかに、量指定子を使います。 初心者:えーと.+,.*とかでしょう。 .は…

今日からはじめよう、正規表現 in Ruby(アンカー編)

アンカーで文字列の先頭や末尾を指定する 初心者:アンカーってそんなのありましたっけ? いま、はじめて聞いたんですけど。 君、いつも使ってますよ。 ほら、ここの「^」とか。これは行頭って意味のアンカーです。 /^\d+/.match("12: 1234") => #<MatchData "12"> 初心者:</matchdata>…

今日からはじめよう、正規表現 in Ruby(基本のき〜文字クラス編)

コンソールで正規表現を試す 初心者:うーん、irbで、ほにゃほにゃ、する。いや、返り値を取得してpとか。 えーと……、ほにゃほにゃ、しないでください。 あなた、プログラマの卵でしょう。 とりあえず、 /正規表現/.match("マッチングさせたい文字列") を入…

htmlファイルからデータを取得してrakeファイルを作る

昨日、 テスト用データを用意するのに疲れた。rakeファイル使ったり、rakeファイルに入れるデータを用意したりしてたら少し手間だったのでそれでやや満足して作業を中断したり とか書いてましたが、 htmlファイルからデータを取得して登録用のrakeファイルを…