2016-05-01から1ヶ月間の記事一覧
eachの戻り値がわかってなかったので、備忘録で書いておきます。 fruits = %w(apple orange grape) def sample puts "hoge" puts yield puts "Hoge" end sample do fruits.each do |fruit| "I like #{fruit}" end end → hoge apple orange grape Hoge I like…
先程記事を書いたばかりなのですが、調べていたら、未だにtail + f でログ監視しているの?という煽り記事を見たので、早速試してみましょう。 使い方 less +F log/development.log これでこんな感じでログ監視できます。 lessのいいところは、この状態でcon…
ログ監視方法にtailを使うと、リアルタイムでログを更新してくれます。 仮にrailsで開発環境のlogを監視していたとします。 使い方 tail -f log/development.log -f オプションをつけることで、止まることなく動いてくれます。 小技 ここでgrepを渡すと、気…
前回の記事では、共通化したvalidationの書き方でした。 mikamisan.hatenablog.com 今回は、単一のモデルでしか使わないvalidationの書き方になります。 書き方 class User < ActiveRecord::Base validate :email_validate def email_validate valid_address…
validationって意外に簡単に作ることができます。 controllerに書いていた、正規表現の入力チェックなどは、validationにしましょう。 こういうのをcontrollerに書くことで、controllerがどんどん重くなっていきます。 モデルの役割は検証もあるので、バンバ…
sqlインジェクションという、昔ながらの攻撃技があります。 内容 アプリケーションが入力値を適切にエスケープしないままSQL中に展開することで発生する。 次のようなSQLを発行することを考える。 SELECT * FROM users WHERE name = '(入力値)'; ここで入…
rspecで関連するモデルを同時に生成する方法があります。 下記のような所有関係を持っていたとします。 class User < ActiveRecord::Base has_many :posts end class Post < ActiveRecord::Base belongs_to :user end Factoryの書き方です FactoryGirl.defin…
flashを改行して表示させる方法です。 app/controllers/hoge def create ...何かの処理を書いている falsh[:notice] = 'hogehogehogehogehoge<br> ←<br>が混ざっている hogehogehogehogehoge' ... end ここでview側でhtml_safeをつけます。 app/views/hoge.html.slim…
rspecで共通項があった場合、shared_examples_forでまとめることができます。 使い方 下記のようなmoduleがあったとします。 app/models/concerns/body_validators.rb module BodyValidators extend ActiveSupport::Concern included do validates :body, pr…
railsのDRYの原則に基づくのなら、modelのvalidationに共通ができてしまったら、共通化したいですね。 そんな時に便利なのがconcernsです。 app/models/concerns こんなフォルダがあると思います。 ここに記述していきます 使い方 例えば、PostモデルとComme…
はい、書いてました。 手書きの何が悪いんだ! って思うんですが、テストや変更に圧倒的に弱いんですよね。 これが致命的ですね。 基本的に手書きで書くのはやめましょう。 手書きで書くというのは、こういうのですね。 url = root_url + 'contact' こういう…
hoge unless ~ ここの~でよく追加して条件を埋めていました。 自分がやっている場合は、いいのですが、何が困ったかというと、自分で振り返ってみたら分からなくなってしまします。 ~でない限りという否定の条件なので、これが深くなっていくと、ぱっと見で…
railsからプログラミングをやりだした自分は、どうしてもsqlの機能についておろそかになってしまいます。 sqlの処理はデータベースの処理なので、大切なユーザーのデータです。 すいません、削除しちゃいました(テヘ では、問題がすみません。 そんな大事な…
rspecのcontrollerでassigns(変数名)で値を受け渡すことができると書かれたいたのに、全く値を渡すことができませんでした。 原因がわかりました。 書き方 Post controllerがあったとします app/controllers/post_controllers.rb def index @posts = Post.al…
FactoryGirlでモデルの関連づけをする場合は、associationを使ったりします。 ただし、なんでもassociationを使うと、テストが多くなるにつれて、テストが壊れやすくなります。 関連づけをする書き方は他にもあります。 associationのあり/なしの書き方を見…
プログラミングをする場合、US配列の方が打ちやすいです。 自分は全く意識がしなかったですが、「;」「:」の切り替えはUS配列だと、shift +になります。 こういう小技が、タイピングする時に活きてきます。 あとは記号の位置になります。 自分はそのことを知…
rspecの書き方で、beforeの書き方で:eachをつけていることがあります。 何か違いがあるのでしょうか?という備忘録です。 before :each do @smith = Contact.create( firstname: 'john', lastname: 'Smith', email: 'jsmith@example.com' ) @jones = Contact…
muninを業務上使うことになったので、調べてみました。 Munin サーバー監視ツールっていう、便利なものが世の中にはあるんですね。 SQLの発行が遅い・・・みたいなこともできるようです。 すごい世の中だ・・・ サーバー監視ツールの役割 そもそもサーバー監…
プログラミングの基礎は購入していました。 ただ、ずっと手づかずだったのですが、GW中に少しやっていました。 プログラミングの基礎ではocamlを使います。 ocamlの特徴として、rubyと異なっているなと感じた点です。 型変更はできない これは大きな違いだな…
irbを使用していると、オブジェクトが整形されて出力されません。 小さいデータならいいのですが、量がかさばってくると探すだけで正直しんどいです。 そんな時に便利なgemがawasome_printです。 github.com 使い方 インストール gem install awesome_print …
yieldはrailsで見かけますが、よく理解していなかったです。 ここでyieldについて説明します。 ブロックについて yieldについて話をする前に、ブロックの話をしないといけません。 そもそもブロックってなんですか?というところですね。 name_list = %w(ali…