diff --git a/app/models/fluent_gem.rb b/app/models/fluent_gem.rb index 09e6cb6..8622962 100644 --- a/app/models/fluent_gem.rb +++ b/app/models/fluent_gem.rb @@ -17,8 +17,11 @@ module FluentGem # but long living caching causes mismatch with actual status e.g. user install plugin from console (without fluentd-ui) # So our decision is that cache `gem list` in 3 seconds Rails.cache.fetch(LIST_CACHE_KEY, expires_in: 3.seconds) do + last_status = $? output = `#{gem} list 2>&1` - if $? && $?.exitstatus != 0 # NOTE: $? will be nil on CircleCI, so check $? at first + # https://github.com/fluent/fluentd-ui/pull/149#issuecomment-71954588 + # Sometimes, $? wouldn't override with `#{gem} list` but I don't know why.. + if $? && last_status != $? && $?.exitstatus != 0 # NOTE: $? will be nil on CircleCI, so check $? at first raise GemError, "failed command: `#{gem} list` output: #{output}" end output.lines.to_a