Ruby
(adsbygoogle = window.adsbygoogle || []).push({}); 新規作成 レコードを新規作成する。 create Entry.create title: "タイトル", body: "本文" INSERT INTO "entries" ("body", "created_at", "title", "updated_at") VALUES (?, ?, ?, ?) [["body", "本…
(adsbygoogle = window.adsbygoogle || []).push({}); 特定のフィールドを取得する select を使う User.select(:name) SELECT name FROM "users" 複数のフィールド名を指定できる User.select(:id, :name) SELECT id, name FROM "users" フィールド名は,区切…
クエリの流れ オプションからSQL文を組み立てる SQLを発行し、データベースからデータを取得する 取得したデータから Rubyオブジェクトを生成する after_find コールバックを呼び出す クエリを行うメソッド Model.take(limit) レコードに格納されている最初…
基本 オブジェクトの生成・更新・削除のタイミングで呼び出されるメソッド トリガとなるイベント(validation,saveなど)の前(before)と後(after)に登録可能 コールバックはメソッドチェーンに追加される。 before_xxx で false を返すか例外を発生させると、…
他対他 の関連を参照する 元々は他対他を直接参照できるようにするもの。 +-------+ +-----------+ +-----+ |Product| 1---n |OrderDetail| n---1 |Order| +-------+ +-----------+ +-----+例えば、特定の Order中の Productを調べたい場合など。 class Prod…
基本 db/migration 以下に YYYYMMDDhhmmdd_XXX_YYY.rb のファイルを作成する Migrationのファイル名とクラス名は一致していないとダメ ファイル名: YYYYMMDDhhmmdd_create_users.rb クラス名: CreateUsers 自分で設定ファイルを作成可能だが 基本的には rail…
(adsbygoogle = window.adsbygoogle || []).push({}); 最近のアプリケーションは git clone してパスを設定するだけ、 というものも増えてますが、chefにも git リソースがあります。git のリモートリポジトリと同期をとり、更新を検出してくれる 点で execu…
chef-solo を簡単に使うには knife solo を使います。 chef-serverを使わなくてもリモート実行できるので楽に一元管理できます。 前提 以下の準備が必要です。 ssh でリモートアクセスできること (パスフレーズ無が好ましい) sudo でroot権限になれること イ…
ルーティングを表示する rake routes で、HTTPのメソッド名・パスとコントローラ・アクションの対応テーブル を出力できる。 $ rake route Prefix Verb URI Pattern Controller#Action welcome_index GET /welcome/index(.:format) welcome#index posts GET …
複数のアプリケーションでバージョン違いのライブラリを 入れるなどしたい場合、bundle を組み合わせて使います。 rails 4.0.2 を vendor/bundle 以下にインストールする例 Gemfile を作成 source "https://rubygems.org" gem "rails", "4.0.2" bundle insta…
chef-client (chef-solo) で使用している、システムのインベントリ情報を JSON形式で出力するツールが用意されています。 $ ohai { "languages": { "ruby": { "platform": "x86_64-linux", "version": "2.0.0", "release_date": "2013-11-22", "target": "x8…
ユーザやグループを作成したい システムのユーザおよびグループを追加するには、userリソースとgroupリソースを使います。 user user "www" do comments "web server" home "/home/www" shell "/sbin/nologin" uid 200 gid 200 supports :manage_home => fal…
サービスの設定をする サーバ類の起動・終了などをchef-clientで管理するには service リソースを使います。次の例では、mysqld をマシン起動時に自動起動させるようにし、 かつ、mysqldサーバを起動します。 service "mysqld" do action [:enable, :start] …
コマンドを実行する execute リソースを使います execute "do command" do command "foo bar" end packageリソースなどとは異なり、冪等性(何度操作しても 同じ状態となる性質)が確保されません。not_if / only_if などで制御する必要があります。 execute…
一部を変数として使いたい Attributes を使います。設定方法は、/cookbooks/attributes/default.rb に、 以下のように指定します。もちろんruby の文法が使えます。attributes/default.rb default["ruby"]["version"] = "2.1.0" recipe中で使用するには node…
サーバの設定(ソフトのインストールやサーバの起動など)をスクリプト に記述して、更新対象のサーバで実行させるツールです。 このツールで、同じ役割のサーバの状態を同じに保つことができます。 (もちろんデータベースの中身やログなどは異なりますが)…
前回の続き rubyのバージョンをプロジェクト毎に切り替える 例えば /home/hoge/app 以下で実行するスクリプトのrubyバージョン を切り替える場合 $ rbenv local 2.1.0とします。/home/hoge/app/.ruby-version が出力されます。 この中身を見れば使用するバー…
(adsbygoogle = window.adsbygoogle || []).push({}); rbenv はrubyのバージョンを 切り替えるツールです。以前rvmを使っていましたがいろいろ環境変数やら を汚す悪いクセがあるのとrailsで推奨されているのでインストール してみました。 インストール方法…
リリースされて1カ月後に ruby 2.1.0 の存在に気づき、時の流れを感じてます。 今回は落ち穂拾い。 手続きオブジェクトのリテラル表記 ->(arg) lambda と同じく手続きオブジェクトを返します。 sum = ->(a,b) { a + b } sum.call(1,2) # =>3 coffeescriptに…
mongoid ( MongoDB を ruby から使うライブラリの一種です。 ODMであり ActiveRecordと同じような記述ができるので rails から使うには便利。 単体でも使えます。 Rails4 から動かす アプリケーションを作成します。 ActiveRecords を使わないので -O (--ski…
Ruby - 2Dゲームライブラリ Gosu を試す(1) - そういうことだったんですね の続きです。 背景/画像を表示する <code>Gosu::Image</code>クラスを使います。オブジェクトを生成して <code>draw</code> メソッドを呼ぶだけです。
2Dのゲーム開発環境です。Ruby(とC++)で実装できます(ただしデスクトップのみ。iOSはC++)。 ゲーム用のフリー素材集など使えばシナリオと少しのコードで立派なゲームを作ることができます。 https://github.com/jlnr/gosu
// ).push({}); // ]]> データ分析やゲームなどでパターンの組み合わせや順列が欲しい場合が多いと思います。 Ruby では Array クラスにこれらを生成する便利なメソッドが定義されています。 組み合わせ(combination) N個の要素からM個を取り出し、順番を考…
Windows環境でさっきまで動いていたプログラムが動かないなぁ、と思ったときの話。LOAD_PATHなど正しく設定してもうまく読み込めなくなってました。
Ruby のコード中のエラーやバグ(を生みそうな)部分を検出してくれるツールが reek です。
自分の書いたテストが、全体コードの何割を占めているかを示す指標をテストカバレッジといいます。数値化されるのでテストの妥当性の検証に役立ちます。 今回はそのカバレッジを調べるRubyライブラリ simplecov を調べてみました。
前回に引き続きruby-2.0の新機能を調べてみます。 Module#prepend です。
Ruby 2.0.0 の新機能としてキーワード引数というものがあります。引数名を与えて、引数の順序を気にせず設定できる、というものです。 PythonやObjective-C などでも有名ですね メソッド定義 引数の部分の定義をハッシュリテラルに似た(というかほぼ同じ)…
Twitter には REST API があり、ツイートやフォロー、タイムラインの取得などアプリに組み込むことができます。 フォローする、リツイートするなどの機能も見かけますね。 curl で十分、といわれるかもしれませんが、その準備は結構面倒なので、 それを解決…
RVM (Ruby Version Manager) はRubyのバージョン切り替えを簡単に行う便利なソフトウエアです。 https://rvm.io/ 通常のインストール (Single-User instrations) インストールも簡単。通常はユーザ毎にインストールするのが普通です。 \curl -L https://get.…