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)」エラー - メモ帳

githubの登録

すでにアプリの開発を始めちゃってる状況からgithubへ登録しようとしてはまった。

最終的には、

 1. githubからnew repositoryでアプリと同名のレポジトリ作成

 2.開発中のアプリのソースを退避(アプリフォルダのリネーム)

 3.$ git clone <url>

 4.退避させたアプリのソースを新しく作成されたアプリフォルダへコピペ

 5.$ git add .

 6.$ git commmit -m 'first commmit'

 7.$ git push -u origin master

これで無事登録完了。

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入門

MySQL/ユーザとDB作成 - MinacoWiki

を参考にデータベース作成。

$ 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)

MySQLでの「Access denied for user ‘root’@'localhost’ (using password: NO) 」への対処 | グーフー WordPressのためのLinuxノート

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系はサポートされなくなっている。

  • Railsのバージョン 3.2系→4.0系への移行によるシステム影響 小
  • Rubyのバージョン 1.8.x系→2.0.x系への移行によるシステム影響 大

Plugin機能の廃止

vendor/pluinsディレクトリがなくなり、外部ライブラリの管理はGemfileを用いたbundlerによる方法に一本化された。

Strong Parametersの標準化

一括更新できるカラムとできないカラムを指定する方法 * 従来はモデル側で「arrt_accessible」などで一括更新可能なカラムを定義していた。  ⇒モデル側で管理するべきでないと判断されたため? * 従来のattr_accessibleも有効だが、将来的には非推奨化される可能性があるため早めの移行が望ましい

Concernsディレクトリの追加

複数のコントローラ/モデルで共有して利用するようなモジュールを配置するディレクトリとして増設された。 ファイルの自動読み込みの対象になっている

非推奨化された主な機能

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回の緊急の仕事による予定キャンセルのほうが精神的に傷つくことが多いです。

自分が「会社の英雄」になりたくない。
じぶんが周りの人を「会社の英雄」にさせない。
マネージャーによって周りの人を「会社の英雄」にならせない。

ように自分で働きかければなと思います。