20140


Ruby on Railsを使ってWebサイトを作っています。  
Ruby,Rails共に初心者です。

capistrano3-unicorn gemの設定方法が分からず調べているのですが、  
設定ファイルがサイトごとでいろいろな書き方がされており混乱しています。

## 質問１

<https://github.com/tablexi/capistrano3-unicorn/blob/master/examples/unicorn.rb>  
上記URLにある `unicorn.rb` 2行目と3行目なのですが、

[code]

    app_path = "/home/example/www.example.com"
    working_directory "#{app_path}/current"
    
[/code]

どちらも 変数宣言＋初期化 を行っているという認識であってますでしょうか？  
`app_path` の行には `=` がありますが、`=` 有無で何が違うのでしょうか？  
もしかして `working_directory` はgem内に定義されているsetter関数でしょうか？

## 質問２

<http://jetglass.hatenablog.jp/entry/2015/07/06/143131>  
上記URLには下記記述があります。

[code]

    def rails_root
      File.expand_path('../../', __FILE__)
    end
    
[/code]

これは `rails_root` メソッドを定義し、`File.expand_path('../../', __FILE__)`
の結果を戻り値として返していますが、 `rails_root = File.expand_path('../../', __FILE__)`
とは書けないのでしょうか？  
`File.expand_path`はメソッドなので、rails_rootというメソッドを定義して、その中で呼び出す必要があり、必然的にこのような書き方になっているのでしょうか？

初歩的な質問で申し訳ありませんが宜しくお願いいたします。  
勘違いをしているようであればご指摘ください。


CC BY-SA 3.0
2015-12-18T03:52:45.310
20138
2015-12-18T04:22:09.967
4850
question
ruby
rubyの構文に関する質問


質問1については

[code]

    app_path = "/home/example/www.example.com"
    
[/code]

これは変数代入です。

[code]

    working_directory "#{app_path}/current"
    
[/code]

これは `=` がないので変数代入ではなくworking_directoryというメソッドの呼び出しではないかと思います。何の目的なのかは分かりません。

質問2については

[code]

    def rails_root
      File.expand_path('../../', __FILE__)
    end
    
[/code]

これですが、これは恐らく読取専用アクセッサの役割を果たすためにこうなってると思います。  
つまり、使う側からすると `Rails`のルートディレクトリを勝手に設定することはできないが、このメソッドを使うことであたかも代入するかのように

[code]

    path = rails_root
    
[/code]

と書けるようにしてあるのだと思います。  
周辺コードの詳細を見てないのであくまでも一般論的な解釈ですが、いかがでしょうか。


CC BY-SA 3.0
2015-12-18T04:13:48.123
20140
2015-12-18T04:22:09.967
2015-12-18T04:22:09.967
9403
9403
20138
answer