ゆうなんとかさんの雑記帳的な。

Twitterで踊ったり音ゲーしたりしてるあの名前がよくわからない人が書いてるらしいよ。

Ruby

またDeviseで死ぬほど詰まってた

やりたいこと ログインしていない状態で認証が必要なページ(ここでは仮にAとします)にアクセスする→ログインページへ移動→ログインに成功するとAへ移動 これ。「フレンドリーフォワーディング」という名前があるそうです。 正解? 公式のHow to通りにやって…

Ruby 2.1.0がリリースされたそうですが

ちなみにリリース日はクリスマスとのことです。気になったのをいくつかピックアップしてご紹介。 新しく分数と複素数のリテラルが追加された 1/2r # 1/2(Rational(1, 2)) 0.333_333_333r # Rational(333_333_333, 1_000_000_000) 1.2i # 1.2i(Complex(0, 1.2…

EventMachineのつかいかたのはずだったけどStreamingするAPIの説明とか簡単なリプライbotの作り方とかになった

ServerSentEventを使って何かやってみたいなと思っていたのですが、結局TwitterのタイムラインをStreaming APIで読み取って、適当にリプライを返すbotになってしまいました。 Steaming APIの仕様 curlで読み取ってみるとこうなります。 curl --get 'https://…

メソッドが定義されていないけれどNoMethodErrorが起きない…?

ActiveRecordってdefで明示的にメソッドを定義していないのにメンバーにアクセスすることができますよね。それなのに例外が起きない。これどうなってるんでしょうか?いままで普通に使ってましたが… ちょっと調べるとこんなメソッドがあるようです。 method_…

rails consoleでカーソルキーを使うと直ちにクラッシュするのはなぜなんだぜ?

四半年ほど悩んでいるのですが、いっこうに解決する気配がなくて困っています。今のところ、Ruby2.0系とRails3.2系の組み合わせでのみ起きています。Ruby1.9系で問題ないし、irbはRubyのバージョンに関係なく問題ないんですけど…?ちなみに以下のようになり…

Bundlerをゆるふわに使っていていたい目にあったお話

今日のハイライト きっ、聞いてないよ!Bundlerを使って必要なGemをインストールするまではよかったのに、バージョンが違うみたいでそんな動きかたしてないだなんて! 改めましてBundlerとは RubyのライブラリはRubyGemsというツールでインストールすること…

ついにE2Eテストが書けるようになったんだけど、道のりが長過ぎた

るびまや先人たちのブログを参考に、Turnipなどを使ってエンドツーエンドテスト(E2Eテスト)を書く環境を整えました。 Turnipってなに? これです。 というのは冗談で、冒頭にあげた通りE2Eテストを自動化するツールです。ちなみにこの手のライブラリの先輩で…

プログラマー「たかが+演算子ごときでメソッドチェーン切りたくない」Ruby「それならこれでもどうぞ」

たとえば文字列を連結して、それから何かしたい場合。他の言語ならだいたい Console.WriteLine(("h" + "e" + "l" + "l" + "o").ToUpper());みたいなことをすると思います。こういうときのように、「文字列をつないでからその文字列のメソッドを使いたい」と…

Grapeというのを触る機会があったので

もちろんグレープといっても これではありませんし、 こちらでもありません。APIを作るのに特化したフレームワークで、例によってGemfileに gem 'grape' って書いたあと bundle で使えるようになります*1。 文法とかそのへん なんかSinatraとRailsのroutes.r…

gem install railsで落ちてくるgemについて調べてみた

インストールしたてのRubyでRailsをインストールしようとするとまとめてインストールされるgemを簡単にまとめてみました。 $ gem install rails Successfully installed i18n-0.6.4 #国際化ライブラリ Successfully installed multi_json-1.7.8 #JSONライブ…

Rubyの定数ってうわー

かなり古い資料なのですが、これを見ているとRubyの定数がアレだということがわかりました。 定数なのに上書きできる(ただしわけあり) 上のページにはこうあります。 変数名が大文字で始まるのが定数である。定数と言うからには(最初の)一回 しか代入でき…

Ruby 2.0 と 1.9 を共存させたい

今の私、いい加減Ruby 2.0を触ってみたいけど、ちょっとわけあってRuby 1.9も使い続けたい、といった感じになってます*1。さて、どうしたものかと調べていたら、「rbenv」なるものがありました。まあ誰しも考えるんでしょうね。 インストールしてみる ssteph…

と、なると気になるのはeachの挙動ですよね

昨日の続きです。 さて、またまたRubyの実装を見て見ることにしましょう。 今度はeachがどのように実装されているのでしょうか。Array#eachは以下のように実装されています。 /*array.c 1742行目*/ VALUE rb_ary_each(VALUE array) { long i; volatile VALUE…

eachでイテレーションさせているコレクションに破壊的変更を加えると

どうなるんだろうと思ったやってみたらちょっと面白かったので。 ! ※破壊的メソッドを使ってもこのように命を狙われることはありません。 破壊的メソッドと非破壊的メソッド 破壊的メソッドは、新たなオブジェクトを生成して返すのではなく、メソッドを持つ…

Ruby on Rails をインストールしたらついてくるActiveSupportとかいうライブラリについて

これなに? タイトル通り、gem install rails と打ち込んだらRailsもろともインストールされる数多のGemのうちのひとつです。この子は何なのかというと、かゆいところに手が届くようなメソッドを集めたものらしいです。ちなみに、Railsを使ったプログラムで…

yieldがキマったと思ったコードがかけたので

個人的にキマったと思ったので yieldとは まずは辞書で引いてみましょう。 英和辞典では a〈作物・製品などを〉産する.b〈利子・収益などを〉もたらす,生む.c〈結果などを〉引き起こす. 〔+目的語(+up)+to+(代)名詞〕a (圧迫または圧力に負けて)〈陣地など…

昨日見たRubyの「なんじゃこりゃあ」な書き方

[[1,2], [5,3], [4, 1]].sort_by(&:first) => [[1, 2], [4, 1], [5, 3]] 何この挙動初めて知った— ゆうなんとか@右手治ってないです (@yuu_hara) 2013, 7月 8 普段なら [[1,2], [5,3], [4, 1]].sort_by{|x| x.first } と書くところのやつですが、何この記法……

Railsのコンソール使ってみたけど、うーん… ほか

今回の前半は悩み事です。 Railsのコンソール使ってみたけど、うーん… Railsってコンソールがあるんですね。いちいちサーバーたちあげるのも面倒だなと思っていたのですが。 ちなみにsじゃなくてcを渡すとirbが起動して、コントローラーやモデルのメソッドを…

Sinatra×RSpecでテストの書き方

調べたけどやっぱりまだよくわからないのでアレですが。 とりあえずRSpecでSinatraのテストを書いているコードを読んでみよう ここにSinatraでHello Worldしたものをテストしているリポジトリがあったので読んでみました。とりあえずこういう構造で書いて行…

チャットのサンプルはあるけどチャットルームのサンプルがない件について

わけあってWebSockets(or Comet)でチャットルーム的な何かが作れないかなーと思っています。 ここでいうチャットとチャットルームの違いをあげておくと、 チャット 不特定多数の人がひとつの部屋を共有する。すべての人は部屋での発言をすべて聞くことができ…

予想は当たっていたけれど調べ方がまずかったみたいです。

昨日の続きです。コメントで教えていただいたとおり、README.EXT.jaを読んでみました。結果、 void rb_define_method(VALUE klass, const char *name, VALUE (*func)(), int argc); でklassというオブジェクトにnameという名前でfuncという操作をするメソッ…

Rubyのソースコードを読んでみたけど思ったゴールには行かなかった

この前Rubyのソースコードってどこにあるのかなぁとか言ってましたが、GitHubにRubyのリポジトリがあったので読んでみました。 とりあえずエントリーポイントと件のinitializeをしていると思しきところだけですが…しかしこれCで書かれてたんですね。 では早…

Rubyのnewとinitialize

そういえば、Rubyってnewで新しいオブジェクトを作るのに、コンストラクタはinitializeなのはなんか統一感ないなと思っていたんですよね。 そこで、例によってドキュメントを見ると、 Objectクラスのインスタンスを生成して返します。 singleton method Obje…

意外と知らなかったRubyのリテラルのアレ

ひまなときにぼーっと見てるとなかなかおもしろいのが出てきました。 文字列中の改行は合法 他の言語だと構文エラーになることが多いのですが、Rubyなら大丈夫です。 "途中で改行してもいい。 そう、Rubyならね。" #合法 複数行にわたって書くこともできます…

知らなかったHamlの機能 ほか

この前Herokuを触ったついでにWindowsにRubyをインストールした私は…なお話です。 知らなかったHamlの機能 ただのHTML簡略記法といい感じにRubyを評価できるだけのものだと思ってたら思いのほか高機能でした。 Markdownを埋め込める .content :markdown ### …

もういっこプログラムネタ

@yuu_hara JSだかPHPだかで"2"+8するとどうなったけー型エラー出たっけーなどと思い出しつつ— ぼろんじ(ArchLinuxBotでないさん (@__boronium) 11月 27, 2012 というのが気になったので試してみました。 JavaScriptはさておき、PHPは文字列連結に「.」を使…

Redmine試験運用中です。

今日は研究室で動かしているサーバーのOSをUbuntuからArch Linuxに変えたついでに、Redmineを試験運用してみることにしました、というお話です。 名前は度々聞くんだけど何なのかよくわかっていなかったので、まずはサクッと調べてみました。 RedmineはRuby …

せっかくなのでTDDしながらチューリングマシン作ってみた

突然なのですがチューリングマシンについて考えなければならない事情ができたので、さくっと作ってみました。ただつくるのも面白くないし、せっかくここ最近TDDについて調べていたので、テストコードも一緒に書いてみました。 慣れていないのもあってか、テ…

RSpec on Railsやってみた

いよいよ開発っぽいことをやりますがやっぱり当分は写経です。 今日はRubyist Magazine - スはスペックのス 【第 1 回】 RSpec の概要と、RSpec on Rails (モデル編)のRSpec on Railsから始めます。 なお、Railsの準備は一応ひと通りやってあるので今回は省…

RSpecでテスト手習いその2

昨日はTDD(Test Driven Development)とか銘打っておきながらちっともDevelopmentしてなかったのですが、今日もやりません。 ぶっちゃけ内容を考えるとタイトルは今日みたいな感じのほうが妥当だったかもしれませんね。さて、昨日は文章量の割に結構あっさり…