这是一个愚蠢的。 Git有时会对文件夹表现奇怪;更改文件夹名称不是推送的更改。在GitHub上,我的视图文件夹是" Bills"有了大写字母B,即使它是"账单"本地。
我通过重命名我的旧文件夹解决了这个问题,创建了一个新的"账单"文件夹,然后将内容从旧文件夹移动到新文件夹(因为移动文件是一个可推送的更改)。有关详细信息,请参阅this。
我的测试在本地传递,应用程序似乎工作,但我在一个控制器上的所有测试都失败了ActionView :: MissingTemplate错误,尽管模板似乎在正确的位置。知道为什么吗?
我只是在下午重构一个rails应用程序(最值得注意的是,将立法重命名为Bill),但我现在遇到了一个我无法弄清楚的构建问题。
当我在本地运行我的测试时,它们全部通过,并且点击应用程序按预期工作。但是,在Travis CI上,我收到了bill_controller_test.rb中所有内容的错误(ActionView :: MissingTemplate):
Error:
BillsControllerTest#test_: bills should get index. :
ActionView::MissingTemplate: Missing template bills/index, application/index with {:locale=>[:en], :formats=>[:html], :variants=>[], :handlers=>[:erb, :builder, :raw, :ruby, :prawn, :coffee, :jbuilder]}. Searched in:
* "/home/travis/build/troy-open-data/legislative_twitter/app/views"
* "/home/travis/build/troy-open-data/legislative_twitter/vendor/bundle/ruby/2.2.0/gems/kaminari-0.16.3/app/views"
* "/home/travis/build/troy-open-data/legislative_twitter/vendor/bundle/ruby/2.2.0/gems/foundation-rails-5.5.1.0/app/views"
test/controllers/bills_controller_test.rb:6:in `block (2 levels) in <class:BillsControllerTest>'
但是,每个控制器操作的文件app/views/bills/*.html.erb
似乎都在那里。为什么Travis找不到它们? (同样,bill_controller_test.rb中的测试是唯一在Travis上失败并且它们在本地传递的测试。)
我无法在本地复制这些内容,到目前为止,谷歌搜索和摆弄它并没有成功。
render: :<action>
上出现的错误)test / controllers / bills_controller_test.rb(#index)(on GitHub)
require 'test_helper'
class BillsControllerTest < ActionController::TestCase
context 'bills' do
should 'get index' do
get :index
assert_response :success
assert_not_nil assigns(:bills)
end
...
end
...
end
app / controllers / bills_controller.rb(#index)(on GitHub)
class BillsController < ApplicationController
before_action :set_bill, only: [:show, :edit, :update, :destroy]
# GET /bills
def index
@bills = Bill.by_recent
.includes(:attachments)
.page(params[:page])
end
...
end
routes.rb (on GitHub)
require 'api_version' # lib/api_version.rb
Rails.application.routes.draw do
namespace :api, defaults: { format: 'json' } do
scope module: :v1, constraints: ApiVersion.new('v1', true) do
resources :bills, only: [:index, :show]
resources :meetings, only: [:index, :show]
scope '/meetings/:id' do
get '/agenda', to: 'meetings#agenda', as: 'agenda'
get '/minutes', to: 'meetings#minutes', as: 'minutes'
end
resources :organizations, only: [:index, :show]
root to: 'data#index'
end
end
resources :bills
resources :organizations
resources :meetings
scope '/meetings/:id' do
get '/agenda', to: 'meetings#agenda', as: 'agenda'
get '/minutes', to: 'meetings#minutes', as: 'minutes'
get '/in_progress', to: 'meetings#start_meeting', as: 'start_meeting'
get '/agenda/toggle', to: 'meetings#toggle_agenda', as: 'toggle_agenda'
get '/minutes/toggle', to: 'meetings#toggle_minutes', as: 'toggle_minutes'
end
get 'search', to: 'search#index', as: 'search'
post 'versions/:id/revert', to: 'versions#revert', as: 'revert_version'
root 'meetings#index'
end
答案 0 :(得分:3)
我发布后就知道了。几个小时前为什么不能发生这种情况? :(如果其他人有同样的问题,我会留下这个问题。
Git不跟踪文件夹跟踪文件。我在GitHub上检查了我的存储库,并且视图位于/ app / views / B 之下;我想当我在重构期间更改它时,由于它是一个文件夹而没有被推送。
我通过将本地文件重命名为Bills并将所有内容从Bills(旧文件夹)移动到bill(新文件夹)来修复它。 (more detail)