#author("2020-02-13T03:37:20+00:00","default:wikiwriter","wikiwriter")
#author("2020-02-17T08:12:53+00:00","default:wikiwriter","wikiwriter")
&tag(IntelliJ/Rails);
*目次 [#r5244286]
#contents
*参考情報 [#jdf48202]
-[[IntelliJ]]
*Tips [#pc621388]

**既存プロジェクトをインポート [#h5339a6e]
-New Projectで既存のrailsフォルダを指定するのがいいようだ。
-rbenvを使用するプロジェクトでも、vendor/bundleではなくrbenvのシステム部にRailsをインストールする必要がある?(IntelliJのGUIを利用して)。
-既存のrailsアプリケーションの上書きはしない。
-実行時に「you have already activated rake 12.0.0 gemfile requires rake 12.3.0 intellij」が表示されたらEdit Configurationの「Run the script in context of the bunlde」にチェックを入れる。

**rakeタスクを実行する [#cac74502]
-OPT+R or Tools→Run Rake Taskより実行。


**railsスクリプトをデバッグする [#h672492d]
-通常のRubyスクリプトのデバッグ用設定を追加し、Ruby scriptをrailsスクリプトに、Script artumentsをrailsスクリプトの引数にする。bundlerを使ってみる場合、Bundelerタブの設定にもチェック。
-デバッグ用のgemをGemfileに入れる必要なし(むしろ入れると動かなくなる)。

**Edit Configuration [#g576873d]
-Edit ConfigurationでRailsを選択。
--Server: default
--IP address: 0.0.0.0
--Port: 3000
--Server arguments: 空白
--Environment: development
--Bundlerの、Run the script…にチェック。

* インスペクションを実行する [#j6af29cb]

**概要 [#o1b66e28]
-Ruby/Railsプロジェクトの怪しい記述を検出してくれる。
-プロジェクトを右クリックし、Analyze > Inspect Codeから実行する。
-既存プロジェクトで適用する場合、出来るだけ適用範囲を少なくして徐々に増やしていく方がいい。

**スコープの設定 [#wf4bf270]
-Custom scopeでappをinclude。余計名フォルダはexcludeしておく。
-基本的にInclude Recursivelyでテストしたいところを追加し、Exclude Recursivelyでテストしたくないところを追加する。
-ライブラリのコードはエラーがみつかってもしょうがないので除外しておく(app/views/kaminariのように自動生成される部分も)。
**プロファイルの設定 [#y7545045]
-Inspection ProfileでRuby関連だけを有効化しておく。Ruby関連でも使わないチェックは外しておく。
-Export/Importによってプロジェクト間で使い回すことができる。
**トラブルシューティング [#j418e36f]
**Unresolved ruby referenceが発生する [#fddfb56a]
***部分テンプレートのerbの場合 [#j7011f07]
-erb内部で変数にアクセスしてresolveできない場合がある。
-冒頭で以下のように代入しておくと1カ所だけnoinspection RubyResolveするだけですむ。
<% # noinspection RubyResolve
   book = local_assigns[:book] %>

***ActiveRecordのモデルのメソッドにアクセスできない [#j6ae577a]
-テーブル定義にあるメソッドが何故か認識されないときがある。
-[[ActiveRecord::Base:http://api.rubyonrails.org/classes/ActiveRecord/Base.html#class-ActiveRecord%3a%3aBase-label-Overwriting+default+accessors]]にあるように、カラムを上書きすれば回避できる。
#pre{{
  def length=(minutes)
    super(minutes)
  end

  def length
    super
  end
end

}}






*トラブルシューティング [#fe4cec7b]

**https://localhost:3000がhttps://localhost:3000にリダイレクトされてしまう。 [#e3e1dff2]
-コンソールに「HTTP parse error, malformed request (): #<Puma::HttpParserError: Invalid HTTP format, parsing fails.」
-発生した原因不明だが、対処療法はWebブラウザのキャッシュをクリアすること。何故かChrome/Safari同時に発生したがそれぞれクリアしたら修正された。

**サーバーをデバッグバージョンで起動すると「you have already activated rake 12.0.0 gemfile requires rake 12.3.0 intellij」が発生 [#uce42fcc]
-Edit ConfigurationでDevelopmentを選びbunlderで「Run the script in context of the bundle」にチェックを入れる。

**Modelのフィールドが見つからないと警告される [#q15ba4c7]
-schema.rbが存在しないと言われる。テーブルを独自に作ってscheme.rbが存在しない場合dumpしてやればよい。OPT+R でdb:schema:dump  を実行。

**RSpecが実行/デバッグできない [#g9d97b0a]
-[[Can not run specs in RubyMine: RSpec support is disabled even though I have rspec-rails gem installed in app's bundle : RUBY-13450:http://youtrack.jetbrains.com/issue/RUBY-13450#tab=History]]が影響?よくわからん。
-無理にIDEのなかから実行するのをやめて、コマンドラインで結果を見るようするという手もある(そのほうが速いし)。[[Rails3+Guard+Spork+RSpec]]
-試行錯誤した結果、完全にrailsを入れていないクリーンなruby環境だとテストできないっぽいことがわかった。gemでrailsとrspec-railsをインストールすればテストできた。
#pre{{
gem install rails --version "=3.2.13"
gem install rspec-rails
}}
-もしくは一旦IntelliJを再起動すればいける?
**rails runnerが実行/デバッグできない [#k054dada]
-これもよくわからず。Gemfileでgem 'debugger'すればdebugできるが、ruby-debugと衝突する?

**ruby-debug-ideでエラー [#vaece659]
-ruby-debug-base19xをインストールすれば消えるっぽい。

***インストール方法1 [#v85f10af]
-[[How do I install ruby-debug-base19x on Mountain Lion for IntelliJ? - Stack Overflow:http://stackoverflow.com/questions/11732715/how-do-i-install-ruby-debug-base19x-on-mountain-lion-for-intellij]]の方法を使う。ruby-debug-base19x -v 0.11.30.pre10だけでいいかも。
#pre{{
gem install ruby-debug-base19x -v 0.11.30.pre10
gem install ruby-debug-ide -v 0.4.17.beta14
curl -L "http://rubyforge.org/frs/download.php/75414/linecache19-0.5.13.gem" -o /tmp/linecache19-0.5.13.gem
gem install /tmp/linecache19-0.5.13.gem 
}}

***インストール方法2[#z7c2f731]
-デバッグしようとすると自動でインストールしてくれる(自分で入れる方法は不明)。
-自動インストールで失敗した場合、次のようにしてターミナルからインストールする(--preが重要)。
 $ gem install ruby-debug-base19x --pre
-homebrewのときは次のようにしてインストール?
 $ gem install ruby-debug-base19x -v 0.11.30.pre3

**ruby-debugでエラー [#e3c70076]
-Gemfileでdebuggerを入れるとエラーになるらしい(衝突)。急にIDEでデバッグできなくなったりした。
-~/.gemにいろいろ入れているみたいなので一旦消してIntelliJを起動しなおす。

**MiniTestでエラー [#f6d45b3b]
-次のようなエラーが表示される。
#pre{{
MiniTest framework was detected. It is a lightweight version of original Test::Unit framework.
RubyMine/IDEA Ruby plugin test runner requires 'minitest-reporters' (>= 0.5.0) for integration
with MiniTest framework (see http://www.jetbrains.com/ruby/webhelp/minitest.html).
Or you can use full-featured Test::Unit framework version, provided by
'test-unit' gem, otherwise default console tests reporter will be used instead.
}}
-[[MiniTest:http://www.jetbrains.com/ruby/webhelp/minitest.html]]と、[[Intellij11とrails(3系)でテストが動かない場合の対処法 - しおしおの雑記帳:http://siosio.hatenablog.com/entry/2012/08/04/161318]]が参考になる。
-Gemfileを修正。
#pre{{
group :test do
    if RUBY_PLATFORM =~ /(win32|w32)/
        gem "win32console", '1.3.0'
    end
    gem "minitest"
    gem "minitest-reporters", '>= 0.5.0'
end
}}
-test/test_helper.rbを修正。
#pre{{
ENV["RAILS_ENV"] = "test"
require File.expand_path('../../config/environment', __FILE__)
require 'rails/test_help'
require 'minitest/reporters'
MiniTest::Reporters.use!
class ActiveSupport::TestCase
  # Setup all fixtures in test/fixtures/*.(yml|csv) for all tests in alphabetical order.
  #
  # Note: You'll currently still have to declare fixtures explicitly in integration tests
  # -- they do not yet inherit this setting
  fixtures :all

  # Add more helper methods to be used by all tests here...
end
}}

** No Rails found in SDK [#p82a9eb8]

***基本対策 [#k2373d28]
-デバッグしようとしたら発生。
-SDKを指定しなおしただけではだめで、再起動必要。debug用gemをインストールしたあと起動できた。

***Ruby 2.3.1で発生 [#ac5b55ac]
-2016/05/05(木) rbenv + Ruby 2.3.1で発生。上記基本対策は効果なし。
-IntelliJ IDEA 15から、IntelliJ IDEA 2016.1にバージョンアップしたら解決した。


**Ctrl+クリックが動作しない(2020/02/17(月)) [#l1c33ac2]
-メソッドの定義にジャンプする「Ctrl+クリック」が動作しない。固まる
-解決方法1: プロジェクトの中にサブプロジェクトが含まれていてそちらのGemfileを正しくしてbundle installしなおしたらうまくいくようになった。
-解決方法2: 「vendor/bundle」だけじゃなく「.bundle/ruby」のしたにもRubyGemsファイルがインストールされていた。「.bundle/ruby」のほうをまとめて削除してらうまくいくようになった。

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS