2016-09-02 13 views
11

私はちょうどRails 4.2.7からRails 5.0.0.1に私のアプリをアップグレードしました。私はRailsDiffを使って、すべてがカバーされていることを確認しました。これまでのところ、すべて私のアプリの読み込みまでうまくいっています。require_tree引数は、Rails 5のアップグレードされたアプリケーション内のディレクトリでなければなりません

は今、私はこのエラーを見ています:

Sprockets::ArgumentError at/
require_tree argument must be a directory 

これは私のapplication.cssです:

/* 
* This is a manifest file that'll be compiled into application.css, which will include all the files 
* listed below. 
* 
* Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets, 
* or any plugin's vendor/assets/stylesheets directory can be referenced here using a relative path. 
* 
* You're free to add application-wide styles to this file and they'll appear at the bottom of the 
* compiled file so the styles you add here take precedence over styles defined in any other CSS/SCSS 
* files in this directory. Styles in this file should be added after the last require_* statement. 
* It is generally better to create a new file per style scope. * 
*= require_tree . 
*= require_self 
*/ 

これはこれは、サーバーログは次のようになります私のapplication.js

// This is a manifest file that'll be compiled into application.js, which will include all the files 
// listed below. 
// 
// Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts, 
// or any plugin's vendor/assets/javascripts directory can be referenced here using a relative path. 
// 
// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the 
// compiled file. JavaScript code in this file should be added after the last require_* statement. 
// 
// Read Sprockets README (https://github.com/rails/sprockets#sprockets-directives) for details 
// about supported directives. 
// 
//= require jquery 
//= require jquery_ujs 
//= require turbolinks 
//= require_tree . 

次のとおりです。

Started GET "/" for ::1 at 2016-09-02 09:08:19 -0500 
    ActiveRecord::SchemaMigration Load (1.5ms) SELECT "schema_migrations".* FROM "schema_migrations" 
    User Load (1.7ms) SELECT "users".* FROM "users" WHERE "users"."id" = $1 ORDER BY "users"."id" ASC LIMIT $2 [["id", 2], ["LIMIT", 1]] 
Processing by ProfilesController#index as HTML 
    Rendering profiles/index.html.erb within layouts/application 
    Profile Load (1.6ms) SELECT "profiles".* FROM "profiles" 
    Rendered profiles/index.html.erb within layouts/application (45.8ms) 
Completed 500 Internal Server Error in 367ms (ActiveRecord: 6.3ms) 


DEPRECATION WARNING: #original_exception is deprecated. Use #cause instead. (called from initialize at /.rvm/gems/[email protected]/gems/better_errors-2.1.1/lib/better_errors/raised_exception.rb:7) 
DEPRECATION WARNING: #original_exception is deprecated. Use #cause instead. (called from initialize at /.rvm/gems/ruby-2.3.1myapp/gems/better_errors-2.1.1/lib/better_errors/raised_exception.rb:8) 

Sprockets::ArgumentError - require_tree argument must be a directory: 
    sprockets (3.7.0) lib/sprockets/directive_processor.rb:182:in `rescue in block in process_directives' 
    sprockets (3.7.0) lib/sprockets/directive_processor.rb:179:in `block in process_directives' 
    sprockets (3.7.0) lib/sprockets/directive_processor.rb:178:in `process_directives' 

私はどの種類のプラグインも使用していません。これはかなり簡単な/バニラアプリです。スタイリングはデフォルトのscaffold.scssからのみです。

この原因は何ですか?

答えて

25

私はついにそれを理解しました。だから私はアップグレードをやっているので、RailsDiffは私に何か不足しているとは言わなかった。

しかし、エラーメッセージは間違っていませんでしたが、私が忘れたのは空のディレクトリを作成することでした。私app/assets/javascripts/cable.js

は、私は次のように持っていた:

//= require_tree ./channels 

しかし、私は実際にそのフォルダを作成するのを忘れました。

これを修正するには、app/assets/javascripts内に空のフォルダを作成してchannelsという名前を付けてください。また、gitは空のディレクトリを無視するので、新しく作成したフォルダ内では.keepという空のファイルを作成する必要がありました。

だから私は次のことをやったら、すべてが魅力のように働いた:

  • は、フォルダを作成します:
  • app/assets/javascripts/channelsは、そのフォルダ内の空のファイルを作成します。app/assets/javascripts/channels/.keep

すべてが今完璧に動作します。

関連する問題