0

量角器配置和脚本在我们的本地开发环境和持续集成环境(类似于 Codeship)中都按预期工作。

项目结构如下(我在下面描述 Codeship 环境状态):

AngularJS应用程序使用Ruby on rails应用程序从REST API构建请求数据,使用AJAX请求。

在我们的 Codeship 配置中,我们设置了 rails 应用程序、迁移和种子数据库,以便所有必要的数据都可用。

AngularJS 应用程序也配置正确,因为登录页面按预期呈现 (我正在打印屏幕,并且主页已正确加载)。

用户名和密码由量角器使用有效凭据(在 mysql DB 中可用)填写。

但是,当单击“登录”按钮时,AJAX 调用返回的响应是 405 Method Not Allowed

由于我们在其他环境中从未遇到过这种响应,因此我们认为它与特定的编码设置有关。

有什么想法为什么 API 只会在 Codeship 上返回 405?

设置如下:

rvm use 2.2.0 --install
cp config/database.codeship.yml config/database.yml
bundle install
export RAILS_ENV="test"
bundle exec rake db:drop RAILS_ENV=test
bundle exec rake db:create RAILS_ENV=test
bundle exec rake db:test:prepare
bundle exec rake db:migrate RAILS_ENV=test
bundle exec rake seed:migrate RAILS_ENV=test
cd frontend && npm install && cd ..
npm install -g grunt-cli
npm install -g http-server
cd frontend && npm install bower && cd ..
cd frontend && bower install && cd ..
cd frontend && grunt build && cd ..
cd frontend && webdriver-manager update --standalone && cd ..
export RAILS_ENV="development"
rake db:structure:load
rake seed:migrate
http-server public -a 127.0.0.1 -p 9000 > /dev/null &
http-server app > /dev/null &
bundle exec rake
cd frontend && grunt test && cd ..

以下是显示 API 响应的屏幕截图部分: 在此处输入图像描述

4

1 回答 1

0

最后,我们的解决方案是使用protractor-rails - 基本上使用 rails 服务器的基本 url,而不是尝试通过 grunt 在不同的 URL 上运行应用程序。我们的设置现在看起来像这样:

rvm use 2.2.0 --install
cp config/database.codeship.yml config/database.yml
bundle install
# protractor tests
export RAILS_ENV="development"
rake db:structure:load
rake seed:migrate
npm install
webdriver-manager update
bundle exec rake protractor:init RAILS_ENV=development
bundle exec rake protractor:spec RAILS_ENV=development
# rails tests
bundle exec rake db:test:prepare
bundle exec rake db:migrate RAILS_ENV=test
bundle exec rake seed:migrate RAILS_ENV=test
bundle exec rake  
于 2015-10-13T13:05:39.343 回答