2013-01-01から1年間の記事一覧

GETリクエスト投げて結果を表示するWEBアプリ作ってみた

デモ https://watch-cat-demo.herokuapp.com/ 使ってる技術 Rails4 できること 一覧でサービスの状態がわかる 稼働ホストでグループピングできる なぜ作ったか 会社で運営しているサイトのステージングが多くなっていて、 生きているかの確認を手でするのが…

1人で考えてたら行き着いたRspecの書き方とか その1

rspec-core (2.13.1) ruby2.0Rspecってすごく個性でると思うので複数人で開発する時は規約を設けないとだめかも。 letメソッド使う let(:word) { FactoryGirl.create(:word) } メモ化っていうらしい。 letの引数に書いているシンボル名を試験内で呼ぶとロー…

git grepが便利

git

プロジェクトからソースコードを探す時はgit grepが手軽で便利。 gitリポジトリ内でgrepしてくれる。 $ git grep -n "TODO" app/controllers/admin/categories_controller.rb:7: # TODO もっと奇麗にかけるのでは app/controllers/admin/categories_controll…

Jpmobileで作ったスマホサイトをスマホから見た時、PCビューを表示するリンクを作る

jpmobile (4.0.0) rails (4.0.0) ruby2.0 作るもの スマホからスマホ対応サイトにアクセスした時に、『PC版を表示する』というリンクがあって、 それをクリックするとスマホからPC版を閲覧ができる機能を作ってみる。 ロジック 特定のクッキーをもっていれば…

Kernel.#openの例外処理

ruby2.0特に理由がないのでmechanizeは使わずopenを使ってスクレイピングしてます。歌丸です。 コード これは記事一覧ページの存在を確認をするためのメソッド。 private def not_found_index_page?(_error_count = 0) is_error_under_5 = ->{ _error_count …

テストの時にスタブで標準出力を黙らせる

メソッド内にインジゲータ感覚で標準出力になんらかの文字を出力しているのって結構あると思う。 でもテストを実行すると実行結果に、そのインジゲータの文字が出力されるのがすごください。 その悩み、スタブで解決。 $stdout.stub(:puts).and_return(nil) …

rspecで遅いテストを表示する

$ rake spec --profile 20上位20件が表示される。 Top 20 slowest examples (93.93 seconds, 36.6% of total time): Admin::Categories POST create 子カテゴリとして作成する時 work! 13.09 seconds ./spec/requests/admin/categories_spec.rb:127 Admin::C…

view specつらい

(ぺろぺろあんてな、スマホサイトを公開しました。)viewのテストはcapybaraで済ませていたのだけど大きな問題が発覚。 テストが遅い。 スロースペックを見てみると、request specが上位独占。裏でブラウザが起動してぽちぽちやっているのでまあ無理もないっ…

ソーシャルサービス連携ボタンに表示されている数字を取得する

ruby2.0 require 'json' require 'open-uri' p JSON.parse(open("http://urls.api.twitter.com/1/urls/count.json?url=http://d.hatena.ne.jp/jiikko").read)["count"] p open("http://api.b.st-hatena.com/entry.count?url=http://d.hatena.ne.jp/jiikko").…

controller_specでCanCan::AccessDeniedが発生しない件について

rails4.0 cancan (1.6.10) sorcery (0.8.1)ブラウザでは例外が発生するのに、 class Admin::BaseController < ApplicationController rescue_from CanCan::AccessDenied do |exception| # controller_specでなぜかとおらない render text: "権限がありません…

計算機プログラムの構造と解釈は、もう売ってない

2013年8月8日の時点で『計算機プログラムの構造と解釈』の出版社は今後技術書は扱わないっぽい。 ピアソンの技術書は書店在庫限りとの見通し。ピアソン桐原社がピアソングループ離脱で(追記あり) http://www.publickey1.jp/blog/13/post_233.htmlいつ買う…

WEBサイトのホストを変えた時にやったこと

nginx version: nginx/1.2.1今までhttp://jiikko.me/はレンタルサーバで動かしていたんだけど、レンタルサーバ自体をほぼ使ってないし、nginxの勉強も兼ねて、契約しているVPSに移行してみた。 やったこと capistranoの設定ファイルを変更しVPSへデプロイす…

Pluggable Selector

今回はPluggable Selector。 文字から見てplug + ableなので、プラグを差し替えする感覚で振る舞いを変えれる、みたいなイメージだと思う。本では、 インスタンス固有の振る舞いを簡単にコーディングするにはどうすればいいのと始まっている。次のコードのよ…

指定したspecファイルを実行する

rspec-rails (2.13.2) rspec-core (2.13.1) rake (10.1.0) 指定したspecファイルを実行する $ rake spec SPEC=spec/controllers/home_controller_spec.rb 指定した複数のspecファイルを実行する $ rake spec SPEC="spec/controllers/home_controller_spec.rb…

Chossing Message

会社の先輩から『Smalltalkベストプラクティスパターン』って本を借りたのでおっ(^ω^)と思ったパターンをメモっていく。 Chossing Message さまざまな選択肢のうちのひとつを実行させるにはどうしますか?Rubyで書くとこういうケースのことだと思う。 clas…

ある条件の時だけモデルの検証をしたい

Rails4ある条件の時だけモデルの検証をしたい時といえば、 ユーザ情報更新する入力画面でパスワードの検証は毎回したくない。 でもパスワードの変更がある時だけパスワード系項目の検証をしたい。とかそういう時だと思う。 update(create)の時だけ検証する o…

Threadを使う

RailsでThread使う機会がないと思っていたけどあった。controllerで複数のサーバへGetリクエストを送信する、という処理を書きたかった。 そのまま書けば、レスポンスが帰ってこないと次のリクエストを投げれないのでとてもパフォーマンスが悪い。 それでThr…

herokuのpostgresDBをdropする

とてもdropしたい。 2011年時点は、migrationを戻してる記事をよくみたけど今はそれ使えなかった。現時点でdropするには、 pgコマンドでDBのURLを調べて、そのURLをresetコマンドでリセットする。という手順を踏まないといけないみたい。 $ heroku pg === HE…

herokuからpingできない

ruby2.0.0herokuで動いているRailsから、任意のホストにpingを送っているのだけど、herokuからだと失敗してる。 ローカルからは成功してるし、実際ホストは生きてる。heroku consoleから叩いてみた。 $ heroku run rails console Running `rails console` at…

git flow使っている

git

仕事でバージョン管理は、git使っているんだけど、会社でgit flowというツールも一緒に使っている。 このgit flowというのは、ブランチを使った開発のサポートをしてくれるツール。普通にgitを使っているとブランチが乱立してくる。(たぶん) どれがマージし…

こういうgem作ろうと思ってる

仕事でWEBサイトをリニューアルしました。 WordpressのサイトをRailsに移植したんですが、URLが8割変わっていて SEOツールから見るとエラーになっているURLがあるとのこと。そういうURLはリダイレクトが必要らしい。リダイレクトが必要なURLを聞いてみると量…

ActiveRecord#joinsメソッド覚えました

Rails4joinsメソッドを最近覚えました。 ActiveRecord#joinsとは、複数のテーブルを結合するメソッドです。 テーブルを跨いでレコードの抽出をしたい時に使います。whereでin句を使えば、テーブル結合しなくても同じ結果が得られるのですがコードが冗長にな…

ご意見送信フォーム設置しました

Rails4最近腱鞘炎がひどいくて湿布を手放せません。歌丸です。http://prpr-antena.com のページフッターにご意見送信フォームを作りました。 レスポンスが遅いなど配色がださいなど送って頂きたく。以下、今回の実装で書いたコードです。 ご意見フォームを作…

RSSフィードを配信する

Rails4アンテナサイトというのは、RSSで取得した記事をRSSで配信するものらしい。 まとめサイトのおすすめ記事一覧にここRSSフィードを配信して貰えばアクセスアップが見込めそう。とういうことで実装してみた。 posts_controller.rb def index @posts = Pos…

アンテナサイト作りますた

http://prpr-antena.com/ サイトについて 2ch系まとめサイトのRSSを定期的に取得して表示するサイトです。 作ろうと思ったきっかけ いつも利用しているアンテナサイトがあるのですが、 夜の時間帯に限らず503で利用できないことがよくあって、これはだめだと…

ActiveRecordで動的なAND検索する

Rails4最近Rails系の記事はgemを減らせというのをよく見るような気がしています。 Railsのバージョンアップに足を引っ張ったり、起動が遅くなる原因だそうです。さて、ActiveRecordでAND検索です。 アプリの規模が小さいのであれば出番が多いのではと思いま…

高さが異なるli(div)を敷き詰める

サイトを作っていて、2カラムの高さがそれぞれ異なるliやdivタグを奇麗に並べたくなった。 普通にそのようなliを回り込みを使って、並べるとliタグが高さで同期を取ろう(?)としているような振る舞いをして、不自然な余白ができる。ぐぐってもCSSでの解決策が…

Debian Wheezyにpostgresインストールした

$ sudo apt-get install postgresql ... supported_versions: WARNING: Unknown Debian release: 7.1 Building PostgreSQL dictionaries from installed myspell/hunspell packages... Setting up postgresql-9.1 (9.1.9-1) ... Error: The locale requested…

さくらVPSを契約してまずやったこと

やったこと サービスの契約 カスタムOSでdebian7いれた。 インストールには、javaが必要。javaが入っていないとカスタムOSをインストールすることはできない。 chormeだとインストールしてるjavaが認識されてないようだったのでFirefoxからOSインストールを…

作業ユーザがsudoを使えるようになるまでの作業メモ

さくらVPSのDebian7は、初期状態ではsudoコマンドが入ってない。 従って自分でインストールしないといけない。作業ユーザー名は、jiikkoとする。 sudoはapt-getでインストールする。 aptを使うにはrootにならないといけない。 $ su $ apt-get install sudo r…