Tag: IntelliJ/Rails

目次

参考情報

Tips

既存プロジェクトをインポート

  • 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タスクを実行する

  • OPT+R or Tools→Run Rake Taskより実行。

railsスクリプトをデバッグする

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

Edit Configuration

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

インスペクションを実行する

概要

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

スコープの設定

  • Custom scopeでappをinclude。余計名フォルダはexcludeしておく。
  • 基本的にInclude Recursivelyでテストしたいところを追加し、Exclude Recursivelyでテストしたくないところを追加する。
  • ライブラリのコードはエラーがみつかってもしょうがないので除外しておく(app/views/kaminariのように自動生成される部分も)。

プロファイルの設定

  • Inspection ProfileでRuby関連だけを有効化しておく。Ruby関連でも使わないチェックは外しておく。
  • Export/Importによってプロジェクト間で使い回すことができる。

トラブルシューティング

Unresolved ruby referenceが発生する

部分テンプレートのerbの場合

  • erb内部で変数にアクセスしてresolveできない場合がある。
  • 冒頭で以下のように代入しておくと1カ所だけnoinspection RubyResolveするだけですむ。

    % # noinspection RubyResolve

      book = local_assigns[:book] %>

ActiveRecordのモデルのメソッドにアクセスできない

  • テーブル定義にあるメソッドが何故か認識されないときがある。
  • ActiveRecord::Baseにあるように、カラムを上書きすれば回避できる。
      def length=(minutes)
        super(minutes)
      end
    
      def length
        super
      end
    end
    
    

トラブルシューティング

サーバーをデバッグバージョンで起動すると「you have already activated rake 12.0.0 gemfile requires rake 12.3.0 intellij」が発生

  • Edit ConfigurationでDevelopmentを選びbunlderで「Run the script in context of the bundle」にチェックを入れる。

Modelのフィールドが見つからないと警告される

  • schema.rbが存在しないと言われる。テーブルを独自に作ってscheme.rbが存在しない場合dumpしてやればよい。OPT+R でdb:schema:dump を実行。

RSpecが実行/デバッグできない

rails runnerが実行/デバッグできない

  • これもよくわからず。Gemfileでgem 'debugger'すればdebugできるが、ruby-debugと衝突する?

ruby-debug-ideでエラー

  • ruby-debug-base19xをインストールすれば消えるっぽい。

インストール方法1

インストール方法2

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

ruby-debugでエラー

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

MiniTestでエラー

  • 次のようなエラーが表示される。
    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と、Intellij11とrails(3系)でテストが動かない場合の対処法 - しおしおの雑記帳が参考になる。
  • Gemfileを修正。
    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を修正。
    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

基本対策

  • デバッグしようとしたら発生。
  • SDKを指定しなおしただけではだめで、再起動必要。debug用gemをインストールしたあと起動できた。

Ruby 2.3.1で発生

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

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2018-03-09 (金) 14:33:11