railsがんばる子

Ruby on Railsがんばる子です。胡蝶蘭のECサイトを運営しています。

Code Search · GitHub githubのソース検索、、、これいい! なんでいままで知らなかったんや。 [Github 検索 ソースコード]Githubのリポジトリから欲しいソースを探しまくる [Github 検索 ソースコード]Githubのリポジトリから欲しいソースを探しまくる | Ke…

サーバー間で権限をコピーしたい場合はrsyncを使うべし

ゼンッ全関係ないけど、rsync使ったら権限や所有者情報をコピーできました。 存在しないユーザは、ユーザIDでくっついてました。 rsync -avgo remote_user@remotehost:/home/remote_user/nanika/ . オプションは思い出せないのでちょっと適当ですが、oがowne…

belongs_toに別名を定義する

## Hoge.rb class Hoge < ActiveModel belongs_to :nanika alias_method :something, :nanika # Hoge.somethingをコールするとnanikaが拾えます。

コントローラーの仕事について考える会

before_filterを使うとコントローラーが綺麗になる、と。 めもめも Railsのコントローラーの仕事は何か? - Qiita Railsのコントローラーの仕事は何か? - Qiita

ruby Arrayでfindするときに初期値が欲しい時はProc.newの引数に値を渡す。

Arrayでfindするときに初期値が欲しい時はProc.newの引数に値を渡す。 Arrayがfindしたときに、要素がない場合に呼ばれるオブジェクトをifnoneという引数で渡してあげることで、渡されたオブジェクトのcallが呼ばれます。 callを持つインスタンスを渡してあ…

ruby のcaseでクラスを比較するときの注意

【Ruby】case比較演算子(===)の挙動 | one's world 【Ruby】case比較演算子(===)の挙動 | one's world はまりましたよ。

モデルをJSON形式で返す

モデルをJSON形式で返す Model.all.as_json

中間テーブルの命名について

中間テーブルは基本、多対多のモデルの関連をつくるために用いているので、 中間テーブル自体は意味のあるデータを持つことは少ない。 XyzToAbcというモデル名を見ると、「中間テーブル」だと推測できます。

rubyからGoogleDriveのスプレッドシートに書き込む

準備1 Drive API アクセスを有効にする ドライブ SDK を有効にする クライアントID、クライアントシークレット、リダイレクトURIを控える ドライブ アプリを登録する - Google デベロッパー アカデミー — Google Developers Gyazo - c274baa73bafb81335bccf…

クラスに定義した関数の実行前後をhookする「method_hooker」

Ruby - メソッドの実行をフックする方法 - Qiita Ruby - メソッドの実行をフックする方法 - Qiita Gemfile gem 'method_hooker' class Hoge def self.hoge1 .. end def pre_hoge p 'pre hoge has executed' end pre_execute_method :pre_hoge Hoge.hoge1 #=>…

gem yardを使ってみるとか

ありかもしれない。

渡された引数はなるべく変更しない。

関数を定義する際、渡された引数はなるべく変更しないようにする。 イミュータブルな関数を作りなさい。ということですね! 副作用はよろしくないです、はい。

moduleでprivate methodを定義する

classだと下記のようにprivate methodを定義できると思います。 class Hoge def public_method1 .... end private def private_method1 ... end しかし、moduleでは方法が少し違います。 module Hoge def public_method1 .... end def private_method1 ... e…

rubyでhashを構造体にしてアクセサっぽくアクセスできるようにする

rubyでhashを構造体にしてアクセサっぽくアクセスできるようにする RubyでHashを構造体にしてアクセサのように取得する 僕はこんな関数にしてみた。 def conversion_of_hash_to_struct(hash) Struct.new(*hash.keys).new(*hash.values.map { |s| Hash === s …

ruby moduleとクラスの違い

moduleはインスタンス(状態)をモテない。 newできない。 メソッドだけを格納できる。 サービスは状態をもたないでイミュータブルにすべきなので、moduleを使う方がよい。

用語集を作る

似た様な用語がたくさんあったり、時と場合により用語が変わってる場合(ほとんどの場合が気分で変わっている)、用語集を提案するとよい。

ruby 30分刻みの時刻リストを作る

10.times.map.each_with_index {|i| Time.parse("18:00")+30.minutes*i}

サービスクラスについて

レビューの指摘事項として「モデルではなくサービスに移動しなさい」というものがありました。 サービスっていうのが良くわからなかったので先生に聞いてみました。 Railsでサービスとフォームを導入してみる話 - assertInstanceOf('Engineer', $a_suenami) …

メソッドの長さについて

メソッドの長さは4〜5行しばりのプロジェクトもあるらしいです。 とのこと。

rubyからGoogleDriveを使う

ドライブ アプリを登録する - Google デベロッパー アカデミー — Google Developers Drive API アクセスを有効にする Drive API へのアクセスを有効にするには、次の手順を行います: Google API コンソールで API プロジェクトを作成します。 API プロジェク…

deviseでユーザの情報を更新したあとに飛ばす

deviseの機能でこんなのあるんだ、っていう驚き。 after_update_path_for(resource) xxx_path(resource) end

rubyのuniqにブロックを渡す

rubyのuniqメソッドでは、ブロックを渡すことで 下記のように特定の要素同士が同じであればuniqしてくれるみたい!! b = [["student","sam"], ["student","george"], ["teacher","matz"]] b.uniq { |s| s.first } # => [["student", "sam"], ["teacher", "m…

def xxxx_range ...だと、Rangeオブジェクトを返すメソッドのように見える

def xxxx_range 1 end

ActiveRecord::Relationを返すならscope

def self.availables where(available: true) end scope :availables, -> { where(available: true) } scopeチェーンできるもの(ActiveRecord::Relationが返るもの)はscopeで、 Relation以外の戻り値を返すものは、クラスメソッドに整理しておけば、 新しく…

gem のありか

gem env gempath

名前検索と、条件検索はメソッド分ける。

名前検索と、条件検索はメソッド分ける。 def search(conditions = {}) if conditions[:name].present? where(name: :name) else where(status: :status) end end def search_by_name(name) where(name: name) end def search_by(conditions = {}) where(con…

設定する値とパラメータの名前は合わせた方がbetter

@hoge.begin_date=params[:begin_datetime] ではなく、 @hoge.begin_date=params[:begin_date]

routes.rbについてバグ注意

railsでupdateを実装してリリースしたところ、既存機能が動かなくなるバグを出してしまった。 原因はconfig/routes.rbでした。 config/routes.rb resources :foos, only: [:index, :create, :update] #<- ここにupdateを足しました。 patch 'foos/bar' route…

AWSでVPC構築

AWS

コマンドでいきたいので、awscliを入れ入れ brew install awscli AWS CLIの設定 設定値はI AMで作成したユーザのCredentialsから $aws configure AWS Access Key ID [None]: XXXXXXXXXXXXXXXXXXXX AWS Secret Access Key [None]: XXXXXXXXXXXXXXXXXXXXXXXXXX…

ruby 引数にくっついてる&ってなんだろう?

処理ブロックを引数として渡す時に&を付与するようです。 # 1引数の手続き(その働きは引数をpで印字すること)を生成し、変数pobjに格納 pobj = proc {|v| p v } [1,2,3].each(&pobj) # 手続きオブジェクトをブロックの代わりに渡している => 1 2 3 参考にさ…