ギークハウスから始まる第二の人生
ギークハウス Advent Calendar 2016
この記事はギークハウス Advent Calendar 2016 4日目の記事です。
Advent Calendar初参戦です。
ギークハウスのAdvent Calendarということで、ギークハウス絡みのお話を。
以前、このブログ記事でも書かせていただきました。
現在もギークハウスに住み込んでいます。上の記事では「ギークハウスはいいぞ」と言っているだけでしたが、今回はギークハウスへ住むことで私の人生が大きく変わったことについて書き連ねていきます。
続きを読むvimconf2016に参加しました
年に一度のvimconf2016開催!
vimconfでvimリストバンドもらった!会社で使おう(手首痛めてたのでちょうど良かった) pic.twitter.com/KZ3VNFYdss
— あれふ (@40balmung) November 5, 2016
vimconf2016に参加してきました。
今までVimキーバインドぐらいしか扱えていなかったものの、RailsエンジニアになってどっぷりVim使いになりました。以前Vim勉強会に参加したところ今回のカンファレンスを知り、一年に一度のVimmerの祭典とのことでしたので楽しみにしていました。
結果として本当に楽しい一日になりました。一日を通しての感想などを簡単に残しておきます。
続きを読むRails開発時に画面描画が遅くて開発テンポが悪い時に検討する設定
今まではJavaやC#をメインで開発してきたのですが、Raisエンジニアになってから開発のテンポが遅くなったことがあります。
それはローカルで動作する画面が遅いこと。
ページ遷移一つとっても数十秒待たされるのでとにかく開発テンポが落ちます。Railsサーバーに出力されるログを見ているとサーバー側の処理は割りと早く終わっているので、フロントエンド側に問題がありそうです。
で、調べてみたところ
config/environments/development.rbへ下記の設定をすると描画読み込みが本番と変わらないぐらい早くなった。
config.assets.debug = false
この設定は何をしているのかというと、本番環境と同様にassets配下にあるcssやjsをapplication.js|cssに纏めるというもの。
設定ファイル(config) - - Railsドキュメント
その代わり、jsをデバッグしようと思うと全てのjsがapplication.jsに統合されてしまっているのでどのjsファイルかわからなくなってしまう諸刃の剣。
jsの修正が無い時に手早く開発したい時には有効な設定でしょう。これでも遅い場合はサーバー側の処理が遅い可能性があるので、クエリを見直したりしてみよう。
これで開発のテンポが少し上がった気がする。Railsエンジニアの方で他に有効な開発方法があれば教えてください。
ValidationEngine.jsで複数項目をajaxで送信したい時
jQueryでバリデーションする時に便利なプラグイン。 github.com
このプラグインを使ってajax経由で好きなバリデーションを掛けることができる。 各form部品をバリデートする際には
// 対象のフォームを指定する $("#userForm").validationEngine(); $.validationEngineLanguage.allRules = { "exists_user": { "url": "/user/exists_user" } }
<input class=" validate[ajax[exists_user]]" data-prompt-position="topLeft" maxlength="7" id="user_id" name="user_id" type="text">
これでuser_idのテキストボックスからフォーカスが外れた時にバリデートが掛かる。もう少し細かく書くとexists_userに指定したurlへGETリクエストが送信される。クエリストリングは対象formのid名とvalueとなる。 サーバーからはバリデートするid名とbooleanを返却すれば自由にチェックできる。チェックエラーの時はfalseを返却すればいい。
ただ、今回は複数のform部品をajaxで送信してチェック処理がしたいので対象formの値しか送信できないと困る。公式ドキュメントを読むとextraDataDynamicに送信したいidを配列で指定すれば良いようだ。
"exists_user": { "url": "/user/exists_user", "extraDataDynamic": ['#user_id', '#email'] }
これでGETリクエストされるクエリストリングには#user_idと#emailに入力された値が送信される。