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

rubyでクラスの型を確認

継承元を含めているかどうかを確認します。 class Hoge end class Foo < Hoge end hoge = Hoge.new foo = Foo.new ===演算子 p Hoge === hoge → true p Foo === foo → true p Hoge === foo → true is_a? p hoge.is_a?(Hoge) → true p foo.is_a?(Foo) → true …

railsのcacheを使ってみる

本番サーバーではガンガン使われているのですが、私自身がcacheを知らないので、調べました。 cacheとは 元となるデーターベースが更新されていないのに、ページ自体をリクエストが飛ぶ度に動的に作成するのは無駄になってます。 一度読み込んだページは、再…

unicornについて

unicornについてわかってなかったので、調べました。 ついでに設定ファイルを書いておきました。 間違っていたら教えてくださいm( )m unicornとは Rack webサーバーの一種です。 Rack webサーバーが何をしているかという、下記の問題を解決してくれています…

form errorで作成されるcssクラスを変更する方法

railsで自動で生成されるform errorの属性を変更したい人っている気がします。 config/application.rbで変更できるのですが、一部分だけ適用したい!って場合があると思います。 一部分だけ適用する方法です。 基本的なやり方 まずは基本的なやり方です。 co…

railsで条件つきvalidationをする方法

A, B, Cがあり、Aをしたら、B,Cがvalidationを行うという状況をしたかったです。 こんなことってありませんか? あまりないのかもしれない・・・ やり方 with_optionsを使えば特定の条件下で複数のvalidationをかけることができます。 個別で行いたい場合は…

railsのpresenceが便利という話

presenceという便利メソッドがあることを教えてもらったので、メモがてらに書いておきます。 使い方 まず、sourceコードです。 presence (Object) - APIdock def presence self if present? end present?であれば、selfを返すというシンプルメソッドですね。…

content_forで特定のページのみ使う処理をする

特定のページでjsだけ読ませたいというのは、よくあることだと思います。 そんな時のためのcontent_forというものがあります。 content_for - リファレンス - - Railsドキュメント 使い方 読み込みをさせる場所にyieldを使います。 app/views/layouts/applic…

vimのAg検索で快適な検索生活

vim

ペアプロを行っていただいて、自分のvimの使い方がダメすぎることがわかりました。 まず、検索の仕方が圧倒的に見直す課題だったので、検索の仕方をまとめました。 少し前まではatomだったので、atomで検索という、二度手間をしていました。 検索方法 Ag検索…

再帰関数について

社内勉強会で再帰関数という言葉が出たので、全く知らなかったので、調べました。 意味 関数の中で自分自身を呼び出すことです。 そのため、再帰関数と呼ばれているんですね。 サンプル 階乗計算が例にあったので、それを使います。 4 x 3 x 2 x 1こんなやつ…

モデルの双方向の関連付けをinverse_ofで整合性を保つようにする

モデルの関連付けをしているので、同じことを意味するのにobject_idが違うためにfalseになるパターンです。 モデル例 class User < ActiveRecord::Base has_many: comments end class Comment < ActiveRecord::Base belongs_to: user end こんな関連付けをし…

paper clipでurlから画像を取得する

よくある(?)urlを入力して、画像を入れるシステムです。 どうやればできるんだ?とか思っていましたが、paper clipで標準でありました。 使い方 参考 github.com 公式にすでにやり方が書いてあります。 class User < ActiveRecord::Base attr_reader :ava…

countについて

sqlが苦手な私です。 今回はcountについてです。 使い方 count(col_name) count関数は引数のcolに対しての行数をカウントしてくれます。 ただし、col_nameをつけるかどうかで動作が変わります。 mysql> select count(*) from household_account_book; +-----…

演算子をオーバーライドする

コメントでいただいたので、調べてみました。 mikamisan.hatenablog.com rubyは演算子をオーバーライド(上書き)することができるようです。 対象となる演算子 | ^ & <=> == === =~ > >= < <= << >> + - * / % ** ~ +@ -@ [] []= ` ! != !~ 上記はメソッド…

mysqlのgroup_by&havingについて

便利なグルーピングについて 前提条件 create table db_name.household_account_book (date date, expense_item varchar(20), memo varchar(100), deposit_amount integer, amount_invested integer) 前回と同じ条件です。 sqlの検索結果の加工 - mikami's e…

要素代入(=)という書き方

gemとかでこういう書き方をたまに見かけます。 def hoge=(hoge) @hoge = hoge end メソッドに=つける意味あんのか?などと思っていました。 要素代入と呼ばれるものです。 参考 ztbuz.hateblo.jp 使い方 class User def name=(name) @name = name end def na…

rubyで多次元配列を作る

多次元配列の作り方がわからなかったのですが、こうすれば作成できます。 hash = Hash.new{ |h, k| h[k] = [] } => {} hash[:foobar] = { foo: :bar} => {:foo=>:bar} hash => {:foobar=>{:foo=>:bar}} hash[:foobar] => {:foo=>:bar} hash[:foobar][:foo] =…

in?とinclude?について

in?という、ActiveSupportのメソッドが使いやすいかもしれないと思ったので、書いておきます。 自分が今やっているプロジェクトで使われていたので、調べました。 結果は同じのinclude?と比較します。 include? まずは、include?からです。 x = [1, 2, 3] y …

rubyの配列の演算子

一発でわからない演算子があったので、備忘録をかねて書きます。 | 和集合 x = [1, 2, 3] y = [2, 3, 4] z = x | y ←重複を削除してくれます。 →=> [1, 2, 3, 4] - 差集合 x = [1, 2, 3] y = [2, 3, 4] z = x - y →=> [1] & 積集合 x = [1, 2, 3] y = [2, 3,…

sqlの検索結果の加工

典型的なrailsエンジニアなので、sql文がなかなか覚えれないので、学習しています。 うん、書かないとどうあがいても覚えれないです。 容量が悪いので、量でカバーするしかない! というわけで、sql文の検索結果の加工についてです。 前提条件 こんなtableが…

実践vimのメモ帳

vim

実践vimを読んでいますが、目から鱗といっていいぐらい、自分が知らないことが多いです。 そして、役立ちそうなことが書いてあります。 ただ、忘れそうなので、ここに書いておきます A 「A」を押すと、一番最後まで行ってくれます。 var foo = hoge . これは…

railsのhidden_fieldで渡す値をsessionで渡してみた

これ以外のいい方法があれば、教えてください>_< 状況 画像のurlを送信 画像のurlが正しいか確認したい 画像表示をして確認したいので、一時的にでも保存したくない(確認画面に移行) 画像確認後、画像に対して引用先を入力させる 画像のurlを送信→validation…

"#{hoge}"で式展開できた

今日、コードレビューで指摘を受けて、教わりました。 いや、今まではずっと変数展開しか知らなかったので、感動しました。 できたんですね・・・ def self_introduction(name, pseudonym) puts "#{"#{pseudonym} is pseudonym ," if pseudonym} my name is …

git revertでコミットを打ち消す

git

正確には差分を作り、commitをなかったことにします。 本日初めて使用しました。 本番環境でやらかして、焦りすぎて、わかってなかったのですが、ここで整理します。 git revert こんなgit diffがあったとします。 diff --git a/app/controllers/users_contr…

has_oneに対して、accepts_nested_attributes_forを使用する方法

has_manyに対してはよくあるのに、has_oneだとないんですよね。 しかも微妙にやり方が違うっぽい(?) 実はhas_manyと同じようなやり方でできることを知っている方がいたら教えてください>_< accepts_nested_attributes_forとは 関連するモデルに対しても、…

git stashについて

git

git stashを好んで使うのですが、原理がわかっておらず、混乱しました。 あ、git stashは現在のブランチで変更を一旦避難するものです。 git stash使用 別のブランチでもgit stash使用 最初のgit stashをしたブランチでgit stash pop使用 あれ、最初のじゃな…

ランダムなデータを1件取得する方法

データを一つだけ抽出したいランダム機能的なやつです。 random_number = モデル.pluck(:id).sample←これでランダムな値を取得する モデル.find(random_number) 以上です。 これが一番早いはずです。 モデル.all.sampleでやってしまうと、すべてのデータを一…

railsのCSSのベンダープレフィックスで悩まなくなるgem

sassを書いてて、変数の使い方にはまって、それを使ってベンダープレフィックスを取り扱う方法をまとめようとしました。 けど、量が多いので、いちいち対応するのは個人では無理だって気づきました。 しかも、不要になったら書かなくていいとか、そんなのを…

vimでCoffeeScriptの構文解析を自動でする

vim

vimで構文解析を走らせてくれるプラグインを導入 NeoBundle 'scrooloose/syntastic' 次に構文解析をしてくるcoffeelintをnpmでインストール npm -g install coffeelint vimに設定ファイルを記入 let g:syntastic_mode_map = { 'mode': 'passive', \ 'active_…

rubyのtryが便利かもしれない

tryメソッドという、有効な手立てがあることがわかりました。 使い方 comment = Comment.last cooment.try(:body) →'hoge' ←存在していれば →nil ←存在しなければ 何が便利かというと、こういう形の場合に省略できるということです。 comment = Comment.last…

railsのsessionの値の保存先

railsのsessionの値は暗号化されているということなので、どこに保存されているのか気になっておりました。 なぜなら、これがバレてしまえば、アカウントハックの可能性が生まれるからです。 sessionについて railsのsessionはcookieを暗号化して保存してい…