質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

RSpec

RSpecはRuby用のBDD(behaviour-driven development)フレームワークです。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Circle CI

Circle CIは、クラウド上に簡単にCI環境を構築できるWebサービスです。GitHubと連携させ、CIしたいリポジトリーを選択しビルド・テストを行います。チャット等を利用して結果を確認することが可能です。

CI(継続的インテグレーション)

CI(継続的インテグレーション)は、アプリ開発においてビルドとテストを繰り返すことで品質改善と納期短縮を図る手法です。JenkinsやTravis CIなどの専用ツールを利用してプロセスを自動化・半自動化して効率的に実施します。

Q&A

解決済

1回答

2983閲覧

rails: request specがローカルでは通るのにcircle ciで落ちる

nanase21

総合スコア144

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

RSpec

RSpecはRuby用のBDD(behaviour-driven development)フレームワークです。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Circle CI

Circle CIは、クラウド上に簡単にCI環境を構築できるWebサービスです。GitHubと連携させ、CIしたいリポジトリーを選択しビルド・テストを行います。チャット等を利用して結果を確認することが可能です。

CI(継続的インテグレーション)

CI(継続的インテグレーション)は、アプリ開発においてビルドとテストを繰り返すことで品質改善と納期短縮を図る手法です。JenkinsやTravis CIなどの専用ツールを利用してプロセスを自動化・半自動化して効率的に実施します。

0グッド

0クリップ

投稿2020/01/16 16:47

編集2020/01/17 00:05

実現したいこと

circel ciで落ちている、rspecのテストを通す方法を知りたい

困っていること

ローカルではreqeust rspecが通るのにgitにプッシュ後に走るcircle ciでなぜか落ちてしまう。
原因を私なりに調べてみると。context 'パラメータが妥当な場合: ログイン成功' doでは特に問題がなくcircle ciは通るのに対してcontext 'パラメータが不当な場合: ログイン失敗' doの時だけ落ちてしまします。(ローカルでは二つとも通ります。

ruby

1require 'rails_helper' 2 3RSpec.describe "Users::session", type: :request do 4 describe "POST /users session" do 5 let(:user) { create(:user) } 6 let(:valid) { { user: { email: user.email, password: user.password } } } 7 let(:invalid) { { user: { email: user.email, password: '99999' } } } 8 9 context 'パラメータが妥当な場合: ログイン成功' do 10 it 'リクエストが成功すること' do 11 post user_session_path, params: valid 12 expect(response).to have_http_status(302) 13 end 14 end 15 context 'パラメータが不当な場合: ログイン失敗' do 16 it 'リクエストが成功すること' do 17 post user_session_path, params: invalid 18 expect(response).to have_http_status(200) 19 end 20 end 21 end 22end

原因箇所

circle

1#!/bin/bash -eo pipefail 2bundle exec rspec --profile 10 \ 3 --out /tmp/test-results/rspec.xml \ 4 --format progress \ 5 $(circleci tests glob "spec/**/*_spec.rb" | circleci tests split --split-by=timings) 6Error reading historical timing data: file does not exist 7Requested weighting by historical based timing, but they are not present. Falling back to weighting by name. 8*..**..../home/circleci/funspo/vendor/bundle/bin/rspec --profile 10 --out /tmp/test-results/rspec.xml --format progress spec/models/address_spec.rb spec/models/admin_spec.rb spec/models/answer_spec.rb spec/models/booking_spec.rb spec/models/review_spec.rb spec/models/user_spec.rb spec/requests/admins_spec.rb spec/requests/donations_spec.rb spec/requests/likes_spec.rb spec/requests/payments_spec.rb spec/requests/reviews_spec.rb spec/requests/top_spec.rb spec/requests/users/registrations_spec.rb spec/requests/users/sessions_spec.rb spec/requests/users_spec.rb: symbol lookup error: /home/circleci/funspo/vendor/bundle/gems/mini_racer-0.2.6/lib/mini_racer_extension.so: undefined symbol: _ZN2v82V813InitializeICUEPKc 9Exited with code exit status 127 10CircleCI received exit code 127 11

#追記
ログイン周りはdeviseというgemを使用しており、session controllerに関してはデフォルトで使用しています。

ruby

1# frozen_string_literal: true 2 3class Users::SessionsController < Devise::SessionsController 4 # before_action :configure_sign_in_params, only: [:create] 5 6 # GET /resource/sign_in 7 # def new 8 # super 9 # end 10 11 # POST /resource/sign_in 12 # def create 13 # super 14 # end 15 16 # DELETE /resource/sign_out 17 # def destroy 18 # super 19 # end 20 21 # protected 22 23 # If you have extra params to permit, append them to the sanitizer. 24 # def configure_sign_in_params 25 # devise_parameter_sanitizer.permit(:sign_in, keys: [:attribute]) 26 # end 27end

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

winterboum

2020/01/16 22:45

sessionのcontrollerを載せてください
nanase21

2020/01/17 00:09

追記させて頂きました。
guest

回答1

0

ベストアンサー

symbol lookup error: /home/circleci/funspo/vendor/bundle/gems/mini_racer-0.2.6/lib/mini_racer_extension.so: undefined symbol: _ZN2v82V813InitializeICUEPKc

Exited with code exit status 127

というエラーメッセージからすると、mini_racer gemのビルドで失敗しているようです。
CircleCIで使っているコンパイラのバージョン等の問題か、mini_racerやlibv8のgemのバージョンの問題の可能性があるので、その辺りを調べて変更してみるとよいかもしれません。そもそもmini_racerがなくても動かせるのであれば、そこを変更してmini_racerなしで動かしてみてもよいでしょう。

投稿2020/01/18 09:49

takahashim

総合スコア1877

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nanase21

2020/01/18 13:32

ご教示いただきありがとうございます。 mini_racerを削除したところ、エラーなくciが通りました。 mini_racerについて少しお聞きしたいのですが、私自身mini_racerの使いかがいまいち分からなくただ入れているだけのgemなため削除したいと思うのですが削除した際に何か影響があったりしますでしょうか? 下記の記事でmini_racerの使い方について書いているのですが、私が現在作成しているポートフォリオではrubyからjsのコードを実行する予定はなく、rubyの値をjsに渡して何か処理をしたいときはgem gonを使って値をassetsのjsファイルに渡して操作しているのでなくてもいいのかなと思うのですがどう思いますでしょうか? プログラミング初学者のため、アドバイスをいただけると幸いです。 https://l-w-i.net/t/ruby/js_001.txt
takahashim

2020/01/18 15:15

そうですね、直接的・間接的にJSを実行することがなければmini_racerはなくても問題ないかと思います。gonもmini_racerやExecJSに依存していないようなので大丈夫そうです。
nanase21

2020/01/22 07:29

返信遅くなり申し訳ございません。 懇切にご教示いただきありがとうございました。 一旦、mini_racerを外すことでエラー回避をしたいと思います。 ちなみに、circle ciの時だけmini_racerのgemを外して実行する方法などってありますでしょうか? もしあればご教示いただけると幸いです。
takahashim

2020/01/26 04:10

circle ciのときだけ、というのではなくて、テストでは外す、ということであれば、Gemfileのgroup指定で、developmentとproductionの時だけ追加するようにするとよいんではないかと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問