kikeda1104's blog

備忘録・技術に関することを書いています。(webエンジニア)

Capybara aタグ(target="_blank")をクリックについて

掲題の件、featureテストを書く量が日に日に増えてきており、何を書くかと書き足りないケースなどを自覚できるになり知見も日々、蓄積できていて楽しく、 クライアントと紹介してくれた友人に感謝っすね。 aタグのtarget属性(_blank) 新規ウィンドウ、タブを…

Rails 5.0からRails 5.1へのアップデート(1/?)

こんにちは。時間の合間に作成しているサービスのRailsを5.0から5.1へアップデートしていまして その内容を書いています。rails upgrade guideが、まだ作成中で、issueを読んで対応していました。 テスト, jsの移行は、まだ終わっていなくて順次移行中です。…

circle.ymlの設定(bunlderのみ)

github上で、ソースを管理しており、プロジェクトでCIを利用しているが、Circle CIのbunlderのversionが localと一致しない(lockfile)ことで、warningのメッセージが上がっていたので、circle.ymlを作成しました。 circle.yml rootディレクトリに、circle.ym…

FormObject実装(2回目)

前回からの引き続き。viewとcontrollerの実装を進めていきます。 前回まで FormObject実装(1回目) - kikeda1104's blog controllerの実装 # controller/sample_forms_controller.rb class SampleFormsController < ApplicationController def new @offer_for…

FormObject実装(1回目)

form_objectの実装を進める際に、gem virtusを使って実装を進めたので、何度かに分けて書いていきます。 環境 Cent 7.x rails 5.0.0.1 ruby 2.3.3 gemの導入 Gemfileに追加します。 # Gemfile ... gem 'virtus' ... $ bundle install app/forms app/formsの…

postgre sql サーバの起動方法(Cent7.x)

自宅のrailsアプリでは、posgreを使っていてサービス起動/停止する際にコマンドを忘れないためのメモです。 環境 Cent OS 7.x PostgreSQL 9.2.15 起動方法 インストール方法により、サービス名も変わります。 # systemctl start postgresql

株式会社リューノスを退職しました。

SNSに投稿するには長文になっていたので、 重複しますが報告と退職の理由について書いていきます。 正確には記事の投稿している日は、まだ在籍中で、1月10日で退職します。 報告 最終日なのに15時位まで、コードを書き、マージまでして、17時過ぎても質問さ…

ActiveRecord::Base.establishによる複数回切り替え時の不具合

掲題の件、テスト書いていることで発見できまして、APIリファレンスを読むと割と合点はいきましたが 間違えなどあれば、指摘いただきたいです。 環境 - rails 5.0.0.1(puma) - ruby 2.3.1 ActiveRecord::Base.establishを何度も読み出すことで、queryを発行…

Strong parameterで受け取れなかったparameter

Strong Parameterを使っていて、取れないケースあたってしまい、後回しにしたので、気になっている。 Workaroundや、Hackな対応をする予定なので、明日また書き直す。 { hoge: { id: '1', name: '2', age: '29', '1': { ... }, '2': { ... } } } class HogeC…

Module名を切り出してclass_nameを取り出す。

Qiitaに同じ内容の記事が丁度あって悲しい気分になったが、コードを書いていたので記録として残しておく。 本ブログは、備忘録という面もありますので、読まれている方は気分を害さないでいただきたいです。 動的にSQLのテーブル、カラムの別名を定義したく…

Factory Methodの利用(Ruby)

Rubyによるデザインパターンという本を借りたまま、持っているのですが、たまたま実務でFactory Methodパターンを利用するのに 良い機会が得られたので、本を思い出しながら設計/実装を進めました。周りを気にせず、実装に集中できるのは楽しいですね。 前…

フィーチャーテスト(Rails + Rspec + Capybara)

追記: コメントをいただきまして、一部内容を更新しています。 今朝、rspec 3.5リリースの記事*1をrspecの公式HPから確認した所 Rails 5 では、 assigns と assert_template が soft deprecated になりました。 という内容が書いてあり、今までcontroller sp…

Rspec callbackのテスト(rails)

callback(before_actionなど)で利用するメソッドのテスト方法を書いていきます。 Controller class DashBoardController < ApplicationController before_action :set_user def index # ... end private def set_user @user = User.where(id: session[:user_…

認証機能のユニットテスト(controller)

今日は、自作のアプリでユニットテストを作っていたので、このあたりを書いていきたいと思います。 自作アプリでは認証のgemは使っていないんですが、記事のためにsorceryを使って書いていきます。 gemの導入手順は省いています。 準備 # Gemfile gem 'sorce…

whereの指定方法

ActiveRecordを利用していて、どうやってwhereを書くのかわからないことがありますし 良く聞かれたりもしますので、書き方について、まとめておきます。 where ActiveRecordの条件を記述する際に利用します。 model # app/models/user.rb class User < Appli…

サービス層の導入

業務で、サービスクラスをmodelsに入れていたので、そのファイルの移動と自作でサービス層を追加しました。 serviceクラス Modelに書くにはコードの量が多い機能で、Fat modelになる恐れがあり、concernに移す事も考えましたが、共通で利用することもないた…

ActiveRecord::Relation#orのworkaround

先日書いた記事の付け足しになりますね。orを利用して検索ロジックを書いていましたが mergeや、whereを利用することで構造に不一致になるケースがあり、HACK,WORKAROUNDで対処しました。 原因はなんとなくイメージできているんですが、詳しい方いましたら、…

Railsでmysqlのviewsを利用する。

弊社のプロジェクトで、viewを利用していたので、覚え書き。 views CREATE VIEW user ( id, name, age ) AS SELECT id, name, age FROM A UNION SELECT id, name, age FROM B; ここは、migrationに置き換えることもできる。 model モデルは、Railsのmodelと…

ActiveRecord::Relation#or

弊社の新規プロジェクトでは、Rails5が使われていてそのおかげで、orが利用できた。 今日は、その辺りをまとめてみる。 ActiveRecord::Relation#or Rails 4系では、sqlのorをアプリで実装しようとするとfind_by_sql、where、joinsなどに直接sqlを書くか。Are…

form_tag、form_forからutf8というパラメータをはずす

検索の機能で、HTTP methodsをpostからgetに切り替えた際に、utf8というパラメータが含まれていたので、これを取り除いた。 form_for, form_tagから自動で生成されるinputタグだが、不要だったので、自動生成されないように変更した。 モンキーパッチ module…

vim snippetの利用

vimからsnippetは以前から利用していますが、環境毎に設定していることがあり、再設定していたので こちらにまとめておく。 環境 Mac OS vim .vimrc .vimrcに追加 ... if &compatible set nocompatible " Be iMproved endif execute 'set runtimepath^=~/.vi…

Rubyのモジュール

コードを整理する際に、classではなく、moduleで整理したいと思う場面がありました。 Railsで書いていることもあり、ActiveSupport::Concernにまとめる形にします、 moduleクラスに機能を混ぜ合わせることで複数のクラスで機能を共有する(Mix-in)という機能…

複数ファイル内の置換

複数ファイルを一度に置換したくて使っているコマンドです。 railsのroutes.rbを修正して、ルーティングヘルパが変わったので一斉に置換しました。 find . -type f -print0 | xargs -0 sed -i -e “s/info_salutation_path/salutation_path/ macOSの場合は、i…

tmux : unknown option: status-utf8というエラーメッセージ

warningがでていたので、tmux.confを更新した。 status-utf8 has been removed after version 2.2. ということで、setw -g status-utf8 on;を削除しましょう。 参考 https://github.com/tmux/tmux/issues/230

constraintsの利用について

後輩にvimの折り畳み開閉のショートカットキーを聞かれてて、忘れてたのに落ち込んだり、 参加したセミナーでテストコードに関する有益な話を聞けてほっこりしてます。 コミュ力って重要。 Railsのroutes.rbで、ルーティングを無条件で利用すると、public下…

friendly idを利用したURI設計

プロジェクトでSEO対策と数値を含めずにURIを設計するため、friendly_idを採用してURIの再設計をしました。 railsではURIにmodelの主キーを含める形の設計が主になりますが、数値では分かりづらくなります。(resourceでは作成されませんが) それほど複雑な仕…

Rspecでseeds.rbをリセット時に読み込む。

プロジェクトにrspecとfactory girlのgemを追加して seeds.rbを読み込んでから、毎回テストを起動したかったのでこのあたりをまとめておく。 環境 Mac OS rails new済み rspecとfactory girlの導入 まずは、Gemfileにrspec_railsとfactory_girl_railsを追加…

gem unicornの起動・定義・再起動

こんにちは。kikedaです。 毎回忘れるので、備忘録代わりに書いておきます unicorn コマンド 起動 railsのrootディレクトリで実行する bundle exec unicorn_rails -c config/unicorn.rb -E development -D 停止 railsのrootディレクトリで実行する kill -QUI…

もくもく会を主催した感想

kikedaです。 先日(1/10)にもくもく会を主催しました。 もくもく会に参加することはしばしばありましたが、主催する側になるのは初めてで、 開催してみて気になることや、反省点がありましたので、ずらずらと書いていきたいと思います。 (ちなみにだれかを批…

link_toのリンク文字列にHTMLタグを入力したい(Rails 3系、Rails4系)

kindle voyageをやっと手に入れました。kikeda1104です。 link_toに、htmlタグを含めたい際の記述について、調べたのでこちらに書きたいと思います。 備忘録ですね。 コード やりたいコードは下記になりますね。 <a href="#"><p>リンクです</p></a> 修正したコード で、Railsのヘル…

PHPのempty関数

備忘録ですね。自分のローカルの環境では、エラーが発生しなかったのですが、他の方の環境ではエラーになり、対応しました。 環境 codeigniter 2.2 PHP 5.5系 empty関数 引数が空であるかを評価して、true/falseを返却する関数です。 ただし、issetなどの変…

MySqlの列挿入

定義済みのテーブルに列を追加するsql。ただ稼働中のサービスのテーブルに追加する際には、 考えたほうがよいです。 今回は、レコード数0件のテーブルなので、alterで追加しますね。 列の追加 alter table テーブル名 ADD 列名 型 以上です。

MySql 外部参照制約

こんにちは。kikedaです。 スキーマを作成して、外部参照制約をつける機会があったので、備忘録です。Googleで検索することはあるんですが、やはり自分のブログを検索して、作業する機会が多いので「他人」より「自分」に向けての、記事を多くなりそうです。…

codeigniterのヘルパー

こんにちは。RubyとRailsが触りたいですが、日々を過ごしているkikedaです。 「あんな技術のないやつらに・。」とか空耳を聞くくらいなので、記事書いたら休みたいです。 今日は、codeigniterを触っていて、ヘルパーを覚える機会があったので、そちらを記述…

codeigniter2.2 エラー対応(Only variable references should be returned by reference)

こんにちは。kikedaです。 codeigniter 2.2で開発したプロジェクトにブラウザからアクセスした際に、エラーが発生したので対応しました。備忘録です。 エラーメッセージ Severity: Notice Message: Only variable references should be returned by referenc…

codeigniter2.2の環境設定

こんにちは。rubyが好きですが、業務でPHPを書くことになり、まずは業務をこなせることを見せようと思っているkikeda1104です。このタイトルで書くのもあれですが、Rubyのコミニティに貢献できるようになりたいですねぇ。 で、codeigniter2.2というフレーム…

Vagrantで構築した仮想マシンにDBのdumpファイルを転送する

こんにちはkikeda1104です。 仮想マシン側からdumpファイルを作成して、ローカルにdumpファイルを転送、復元するようにします。 前提 Mac OS X yosemite Vagrant 1.4.3 Cent OS 6.5 MySql 5.6.16 DBからdumpファイルをダウンロード $ vagrant ssh $ cd $ mys…

Vagrantのディレクトリを削除後にVagrantのprocessを削除した(Cent OS6.5)

掲題の件を調べる機会があったので備忘録として置きます。 Vagrantを起動 $ cd ~/vagrant_dir $ vagrant up $ rm -rf ~/vagrant_dir Vagrantのゾンビプロセスを削除 $ vagrant global-status --prune 以上

日報(2014/10/31)

12:00 - 14:00 スクレイピングのスクリプトの調整 14:00 - 15:00 KVMが導入できるか調べる x86でしか対応できないので、ひとまず見送る 16:00 - 18:00 サービスに画像アップロード用のgemと機能を追加 ついでに記事を書く 18:00 - 23:30 ローカルでNginxのイ…

Nginxの設定

こんにちは。kikeda1104です。 前回の記事で、Nginxのディレクティブの一覧を作りました。それを参考にしながら公開する目的で、 Nginxの設定を進めていきたいと思います。 システムの前提 アプリケーションフレームワーク Rails version 4.1.1 # 随時アップ…

rmagickのインストール(Cent OS 6.5)

こんにちは。kikeda1104です。 rmagickのインストールで、必要なライブラリが足りずにコンパイルエラーになっていたので、 調べて対応しました。 環境 Cent OS(6.5) 必要なlibのインストール $ yum -y install libjpeg-devel libpng-devel $ yum -y install …

Capybara-webkitの導入(Cent OS 6.5)

こんにちは。kikeda1104です。 スクレイピングで、JSがrenderするDOMを触る必要があったので、CapybaraとCapybara-webkitをインストールしました。 環境 Cent OS 6.5 まず、インストールする上でqtが必要になるので、これをインストールします。 Qtのダウン…

日記(2014/10/29)

10:00 - 12:30 出かける準備 12:30 - 15:00 移動 15:00 - 16:00 面接 16:00 - 19:00 帰宅 19:00 - 23:30 bindのインストールと導入。 書籍を読む 感想&課題 アウトプットをもっと意識したい。 読書録でもいいかもしれない。 コードについてもアウトプットと…

日記(2014/10/28)

10:00 - 12:00 自宅にDNSサーバを導入したくなり、Bindを導入する 12:00 - 13:00 自宅の周りで騒ぐ女性に集中力をそがれる 13:00 - 17:00 食事 出かける準備 17:00 - 24:00 出かける。 横浜にてもくもく 進捗なし(;´_ゝ`) 課題&感想 意識が低くなりそう。 …

日記(2014/10/27)

10:00 - 13:00 スクレイピングのコードを書く 書籍を読む(Amazon Web Services クラウドデザインパターン設計ガイド) AWSを触りたいが、お金が・・。 13:00 - 14:00 昼食 14:00 - 23:30 スクレイピングのコードをrakeタスクにして、githubで1人PRでまーじす…

日記(2014/10/26)

日記です。 06:00 - 13:00 良い人と楽しい時間を過ごした。 13:00 - 15:00 帰宅 15:00 - 16:00 スクレイピングの学習(xPath) 16:00 - 18:00 昼寝 18:00 - 23:30 スクレイピングのスクリプトの作成 記事の作成(2) 課題&感想 純粋に楽しみたいなと思った。 js…

ActiveRecordを利用する(Ruby)

kikeda1104です。 スクレピングした内容をDBに保存する際になどに、ActiveRecordを利用することで簡易に操作することができるので、利用してみました。 ActiveRecord Railsの標準の添付されており、MVCのM(odel)の概念を実現しているライブラリです。 Activ…

capybara-webkitのインストール

こんにちは。kikeda1104です。 nokogiriと利用して、スクレイピングをしようと思いましたが、jsによるrenderが発生しているサイトだったので、gem capybaraとcapybara-webkitのインストールをします。インストール最中につまづきがあったので、備忘録として…

nokogiriのインストール

こんにちは。睡眠のリズムを崩しているkikeda1104です。 とはいえ、眠い眠いと思いながら作業することがないので快適に作業を進められてます。 環境 Mac OS yosemite homebrew nokogiriのインストール 事前準備 $ brew update $ brew upgrade $ brew install…

日記(2014/10/24)

日記です。 10:00 起床 10:00 - 15:00 コードを書こうとするが頭痛くて、手がつかず。 出かける準備 15:00 - 17:00 移動 17:00 - 18:00 面接 18:00 - 20:00 移動 20:00 - 23:30 Mac yosemiteにアップデートしてロケールを英語にしていると日本語入力が変換し…