BracketsでRuby実行する拡張機能・インデント時にスペース2つ幅設定

■Bracketsとは
非常に優秀で使いやすくて高機能なSublime Textの代替できるレベルのAdobe製テキストエディター Brackets。これが無料は本当にすごい。拡張機能も豊富でなんでもできるし、デザインも素敵。
http://brackets.io/

■Brackets上でRubyプログラムを実行
拡張機能のBrackets Builderをインストールすると実行できるようになる。
(Sublime Textだと Command+B でbuild実行できるやつです)

1)ファイル – 拡張機能マネージャ – 検索窓で「Integrated Development」を検索してインストール
2)Bracketsを再起動(これ重要)
3)Command+Alt+B でRubyプログラムが実行できる(下にRun Resultが表示される)

【補足】
同じくプログラム実行できる拡張機能で「Brackets Builder」と「Brackets Builder Extended」(2つの違いはわからず)があるが、どちらも実行時の出力がちゃんとできず、文字列がおかしな表示になった。

■拡張機能のIntegrated Developmentで古いRubyのバージョンが実行される場合
設定ファイルの cmd が実行ファイルの場所を指定しているので、それを書き換えるだけ。
メニューの 編集 – Edit Builder で、実行したいRubyファイルの場所を指定する。

(例)
“cmd”: “/Users/***/.rbenv/shims/ruby $FILE”,

デフォルトだと「”cmd”: “/Users/***/.rbenv/shims/ruby $FILE”,」になっている。

Rubyでバージョンを確認するには、rubyファイル作って(.rbファイル)、「p RUBY_VERSION」を記述し、Integrated Development拡張機能をインストールした上で、Command+Alt+Bで確認できる。

【備考】
・自分の場合は、ちゃんとrbenvでインストールした$PATHを指定しているのに(しかも/usr/bin/よりも先頭に定義していて、$which rubyするとrbenvのパスが表示される)、なぜか/usr/bin/rubyのバージョンが優先実行されてしまったため、設定ファイルを編集した。
・Integrated Developmentの設定ファイルを編集する際は、jsonファイルなのでコメントアウト(#とか//とか)は使えません。直接書き換えるのがよいです。

■Bracketsでインデント幅をスペース2つ分に設定
1.タブの見え方を変更する場合
下部のステータスバーの一番右(画面から見るとつまり右下)の「タブ幅」を4から2に変更するだけ。ただし、見え方だけスペース2つ分になっているだけなので、他のエディターにコピペすると通常のタブと同じ幅になる。

2.スペース2つ分にする場合

Rubyなどでインデントする時にタブではなく、スペース2つ分の幅に設定をしたい場合は、右下の「タブ幅」をクリックすると、「スペース」に表示が切り替わるので、そこで数値を4から2に変更することでインデントがスペース2つ分の幅に変更される。

「”useTabChar”」という設定で制御しているらしく、Brackets – 環境設定 で「Brackets.json」ファイル(Bracketsの設定ファイル)を開いた状態で、上記の「タブ幅」から「スペース」に切り替えると、「”useTabChar”」の値がtrueからfalseにリアルタイムに変わる。

BracketsでGetting Startedを消す方法(別フォルダ開くと消える)

Bracektsの左パネルに表示される「Getting Started」は消すというよりも、他のフォルダーを開くと、そのフォルダに置き換わるようになります。何かしらが常に表示されるみたいなので、それしか方法はないようです。

参考サイト:How i Close Getting Started File From Panel #12682

Rails5で自作クラスの読み込み(app配下に置く)

自作のクラスやモジュールを読み込む場合、 Rails4だと

config.autoload_paths += %W(#{Rails.root}/lib)

みたいなのをconfig/application.rbに設定したかと思いますが、
Rails5ではこれを記述するとエラーが出ます。

■対応策 A案
 app配下は自動で読み込まれるため、そこに自作クラスを置く。
 (app配下にあるとわかりやすい&挙動調べるときはまずここを見るかと思いますので
  個人的には素直にここが最適かと思います)

以下、設定例

[app/lib/foo_bar.rb] libフォルダとfoo_bar.rbは自分で作る
class FooBar
  def hi
    return “hi.”
  end

  def bye
    return “Good bye!”
  end
end

[app/controllers/users_controller.rb] 例のためcontrollerかましています
  def index
    @foo = FooBar.new
  end

[app/views/users/index.html.erb]
<%= debug @foo.hello %> #=> hi
<%= debug @foo.bye %> #=> Good bye!

■対応策 B案
 任意の場所libフォルダとかに自作クラスを置いてrequireで読み込む。

 以下、設定例

[lib/hoge.rb] foo_bar.rbは自分で作る
class Hoge
  def hey
    return “hey there.”
  end
end

[app/controllers/users_controller.rb] 例のためcontrollerかましています
  require ‘./lib/hoge’

  def index
    @hoge = Hoge.new
  end

[app/views/users/index.html.erb]
<%= debug @hoge.hey %> #=> hey there.

■対応策 C案
 Rails4みたいにautoloadする設定を入れる。

Rails5のproduction環境でlib/配下のクラス読込みがNameErrorになるのはautoloadが無効化されたからだった

■参考サイト
Rails 5 ignoring /lib class? 
 上記の回答では、config/application.rbでrequireしろ、という内容です
Railsアプリのモジュールはどこに置くべきか問題 (公開版)
・読み込むための命名規則(ファイル名、設置場所に伴うクラス名・メソッド名)が厳密に定義されているので要注意