質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

解決済

3回答

477閲覧

Rails でどこにも定義されていない変数

退会済みユーザー

退会済みユーザー

総合スコア0

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

0クリップ

投稿2018/08/01 03:27

入門サイトを一通り読んだ程度の知識で数十画面遷移の Rails Web アプリを触ることになったのですが

コントローラにいきなり
xxx.yyy = zzz
と書かれていて xxx がどこで作られているのかわかりません
リポジトリ内のファイルで 'xxx =' を検索してもヒットしません

継承元のファイルを読んでも代入してる場所は見当たりません
before_action に認証関連のメソッドが1行書かれていたんですがあまり関係なさそうです

コントローラが呼ばれる前に暗黙のうちに呼ばれる別のコントローラだったり
あるいは PHP の _GET, _POST みたいなデフォルトの予約語があったりするんでしょうか

Rails で使えるデフォルト変数一覧みたいなものがあれば教えていただきたいです

初歩的な質問で申し訳ありません

ルーティングでも index destroy edit みたいなアクションが宣言なしで使えるみたいですし
フレームワークを初めて触って予約語の多さに戸惑っています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

CHERRY

2018/08/01 04:41 編集

具体的なソースコードを記載されていないので、その変数が、予約語かどうかと聞かれても判断できません。 xxx を具体的に記載してください。 公開できないソースコードであれば、「触ることになった」ということは、誰かに指示されたのだと思いますので指示した人に聞いてみるのはどうでしょうか?
退会済みユーザー

退会済みユーザー

2018/08/01 05:27

今週リーダーが夏休み中でゆっくりでいいのでソースを読んでみてくださいとだけ言われてるんですよね… つまりRailsでは変数やメソッドが予約語かユーザ定義なのか簡単に調べる方法はないということなのですね…
guest

回答3

0

ベストアンサー

それは変数ではなくメソッド呼び出しである事が多いです

https://api.rubyonrails.org で探してみるとか

あとはpry-railsをインストールしてrails consoleからshow-methodで調べたりもします

投稿2018/08/01 04:01

asm

総合スコア15147

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2018/08/01 04:22

あー なるほどです Ruby は () がいらないので xxx. と書いても引数なしメソッドの返値に対して処理してる可能性もあるのですね ちなみに show-method はうまく動きませんでした >gem install pry-rails >rails c irb(main):001:0> show-method NameError: undefined local variable or method `show' for main:Object とりあえずメソッドの可能性も考慮に入れて調べてみたいと思います 盲点だったのでありがとうございました
asm

2018/08/01 08:03 編集

> irb(main):001:0 irbですね、それ railsはbundlerによって環境が隔離されるので、Gemfileに記載し、bundle installしないといけません
退会済みユーザー

退会済みユーザー

2018/08/01 08:08

そうなんですか… ただ Gem を書き換えると間違えて commit した時に反映してしまいそうで怖いです 本番環境では必要のないものなので勝手に増やすのはまずいかなと…
退会済みユーザー

退会済みユーザー

2018/08/01 08:29 編集

横から失礼しますが、ブランチ切って作業してれば関係ないのでは? あなたと同じ所属ではないので余計なお世話かも知れませんが、 もしmasterブランチで作業しているのであればソースコードより先に gitから理解したほうがいいかも知れませんね...。
guest

0

gon という JS と変数を共有するライブラリ?の変数だったようです…
include_gon というのがあったのでそこで定義されたんだと思います
こんな短い小文字の変数が外部のライブラリ由来のものだとは思いませんでした…

gon.yyyyy の部分が明らかにユーザ定義の内容だったのでソースをはるのを避けたんですが
最初から張って入ればよかったです
お答えいただいたのに申し訳ありません

投稿2018/08/01 08:51

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2018/08/01 09:37

わざわざありがとうございます やっぱりメソッドだったのですね ただリポジトリのルートから find . -type f | xargs grep 'def gon' とやっても見つからないみたいです Gemfile の中にはgem 'gon'というのがありましたがどういうことなんでしょうか… Gemの仕組みもよくわかってなくてinclude された時点でコンパイルされちゃってるんでしょうか 今後同じようなことがあってもまた困るような気がします とりあえずメソッドだったということでベストアンサーをつけさせていただきますね なんども回答をくださって本当にありがとうございました
asm

2018/08/01 09:51

もしかして、bundle installした時に--pathでインストール先を選択せずにインストールしてしまったのでしょうか? その場合、rubygemsが管理する場所にインストールされるので、リポジトリ内から探す事はできません。 大抵の場合は、bundle install --path vendor/bundleを指定し、gitignoreによる指定でvendor/bundleを無視ディレクトリに入れているプロジェクトが多いと思います。
guest

0

入門サイトを一通り読んだ程度ですと、実際のプロダクトコードを理解するのは時間がかかると思います。
最低でも、自分で手を動かしてRailsで複数画面を使ったWebサービスを作れるくらいの理解度は欲しいです。

回答ですが、たぶんここを見れば全て解決といったページはないです。

それでも参考になりそうなページを1つ挙げるとすれば、ここですかね。
https://railsguides.jp/

最新の内容(公式、英語)は、こちらです。
https://guides.rubyonrails.org/

投稿2018/08/01 03:47

mingos

総合スコア4025

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2018/08/01 03:57

ありがとうございます 今から読んでみます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問