rails sで「WARN TCPServer Error: Address already in use - bind(2)」エラー
研修の時のも同様のエラーにぶつかったけど、今回はすぐに原因を調べることができたのでメモ。
研修の時は、
$ rails server --p=3001
のようにポートを指定してやって回避したけど。 今回は、プロセスを確認して原因が判明。
$ lsof -i:3000 COMMAND PID USER FD ~ VBoxHeadl 5769 stuby 30u ~
つまり、VirtualBoxでポート3000を使ってた。。
$ vagrant halt
でVirtualBox終了させて解決。次起こった時もプロセス覗いて解決できそう。
参考:rails s で「WARN TCPServer Error: Address already in use - bind(2)」エラー - メモ帳
Access denied for user 'root'@'localhost' (using password: NO)(その2)
Access denied for user 'root'@'localhost' (using password: NO)(その1) - stuby
の続き。
rails sでアプリを起動しようとするとエラー。
Unknown database 'アプリ名_development'
読んだまま、アプリ名_deveopmentっていうデータベースが存在しない。。 rails newの時に-dでmysql指定してたら裏で作ってくれるんだと思った。(ゆとり乙)
MySQL用のデータベース設定ファイル(database.yml) - Ruby on Rails入門
を参考にデータベース作成。
$ rails g scaffold テーブル名 フィールド名 $ rake db:migrate $ rails s
やっと、Rails4でいう「Hello World」の「Welcome aboard」が表示できた! スタートに立つまで長かった。。
Access denied for user 'root'@'localhost' (using password: NO)(その1)
MysqlをGemでインストールできたけど、rails sで起動すると
Access denied for user 'root'@'localhost' (using password: NO)
Access denied for user 'root'@'localhost': Ma note
を参考にターミナルではログインできるようになったけど、rails sではやっぱりエラー。。。
Rails3系からの変更点
研修に行ってきたので、まとめ。 Rails初心者のわたしにとっては、研修の内容のほとんどが目新しい物情報でメモしたことを残しておく。 独学もいいけど、体系的に学ぶのも学習の初期段階には効果が大きいと感じました。
変更点の確認方法
Railsのリリース記事の確認
http://edgeguides.rubyonrails.org/4_0_release_notes.html
対応するRubyバージョンの更新
Ruby1.9.3以上のバージョンが必要になった。
1.8.x系はサポートされなくなっている。
Plugin機能の廃止
vendor/pluinsディレクトリがなくなり、外部ライブラリの管理はGemfileを用いたbundlerによる方法に一本化された。
Strong Parametersの標準化
一括更新できるカラムとできないカラムを指定する方法 * 従来はモデル側で「arrt_accessible」などで一括更新可能なカラムを定義していた。 ⇒モデル側で管理するべきでないと判断されたため? * 従来のattr_accessibleも有効だが、将来的には非推奨化される可能性があるため早めの移行が望ましい
Concernsディレクトリの追加
複数のコントローラ/モデルで共有して利用するようなモジュールを配置するディレクトリとして増設された。 ファイルの自動読み込みの対象になっている
非推奨化された主な機能
- ActiveRecord::SessionStore 外部Gem「activerecord-session_store」へ移行 ⇒「encrypted_cooie_store」が導入され、CookieStoreを暗号化することで秘密情報も保存しやすくなった
- ActiveResource https://github.com/rails/activeresource
pulic/index.htmlの削除
config/ruets.rbで「root」指定をした際に、意識的に同ファイルを削除する必要がなくなった。
turbolinks
Rails4から標準になった、画面遷移を高速化するための機能 * アセットの内容が変化しないような状況で効果を発揮する * HTML5の機能の利用を前提としているため、対応していないブラウザでは機能しない * Ajaxで遷移先のソースを取得し、ページ内でBODY部を変更するためwindow.onloadなどが発火しない * jQueryの「$(document).redy()」なども同様に発火しない
特定リンクのみturbolinksを無効化
<div data-no-tubolink> <%= link_to 'New Bookmark', new_bookmark_path %> </div>
turbolinks自体を無効化
- app/assets/javascripts/application.jsから以下の行を除去する
//= require tubolinks
- Gemfileから「gem 'turbolinks'」の行を除去する
- レイアウトファイルのアセット読み込み部分における「"data-turbolinks-track"=>true」の記述を除する
おまけ
execjs⇒assets Winではtherubyrucerのコンパイルはハードルが高い ※現状では、Win8でexecjsが正常に動作していないらしい node.jsで代用できるらしい
.keep gitはフォルダの中身が体と管理対象にしてくれないため、空フォルダのを強制的に管理対象とするためのファイル
Winでは「.」で始まるファイルを移行してくるときに削除される ⇒.bundle/configが移行されてこない
railsファイル内のgem検索
$ search {gem名} -r
Gemのカスタマイズ 後続のバージョンが出やすいので多くの場合、カスタマイズを許しているケースが多い ⇒/config/initializersを修正 「I18n」「config/locaks」「config/application.rb」
「会社の英雄」になりたくない、させない、ならせない。
参考:「会社の英雄」になってどうするの? 長時間労働の末に悟った「人間らしい働き方」とその実践法 : ライフハッカー[日本版]
「会社の英雄」を作り上げてしまうと、子育てなどの理由で全時間を仕事に投入できないスタッフが働きにくくなります。社内政治が生まれ、スタッフの不満や意見の相違が吹き出すようになるでしょう。
「会社の英雄」本人も周りも幸せでない。 いや、もしかしたら会社の英雄になった人たちの中には充実感や達成感を感じたりする人もいてマイナスの感情ばかりではないかもしれない。
また、「会社の英雄」がマネージメントを行えば
残業が日常化すると、ある仕事を達成するのに必要な日数を考える際に、当然のように残業を計画に組み込んで見積もってしまうようになります。1日あたりに成し遂げられる仕事量の見積もりが多くなり、実際にそれを実行すると、仕事量が多すぎて、チームメンバーが燃え尽きてしまうのです。
精神面にとってさらに最悪なのは、緊急の仕事によって、予定をキャンセルしなければならない事態が連続することです。
僕自身の経験として、1周間深夜作業が続くより1回の緊急の仕事による予定キャンセルのほうが精神的に傷つくことが多いです。
自分が「会社の英雄」になりたくない。
じぶんが周りの人を「会社の英雄」にさせない。
マネージャーによって周りの人を「会社の英雄」にならせない。
ように自分で働きかければなと思います。