Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

You have already activated set 1.0.3, but your Gemfile requires set 1.0.4. Prepending bundle exec to your command may solve this. (Gem::LoadError) #275

Closed
jiikko opened this issue Dec 8, 2023 · 6 comments

Comments

@jiikko
Copy link
Member

jiikko commented Dec 8, 2023

たまに発生する。もう1度同じコマンドを実行すると成功することがある。
inline bunderを使っているせいな気がする。

pi@raspberrypi2[/usr/share/pbm/current]$ sudo /home/pi/.rbenv/versions/3.1.2/bin/ruby app.rb
n/home/pi/.rbenv/versions/3.1.2/lib/ruby/3.1.0/bundler/runtime.rb:309:in `check_for_activated_spec!': You have already activated set 1.0.3, but your Gemfile requires set 1.0.4. Prepending `bundle exec` to your command may solve this. (Gem::LoadError)
        from /home/pi/.rbenv/versions/3.1.2/lib/ruby/3.1.0/bundler/runtime.rb:25:in `block in setup'
        from /home/pi/.rbenv/versions/3.1.2/lib/ruby/3.1.0/bundler/spec_set.rb:136:in `each'
        from /home/pi/.rbenv/versions/3.1.2/lib/ruby/3.1.0/bundler/spec_set.rb:136:in `each'
        from /home/pi/.rbenv/versions/3.1.2/lib/ruby/3.1.0/bundler/runtime.rb:24:in `map'
        from /home/pi/.rbenv/versions/3.1.2/lib/ruby/3.1.0/bundler/runtime.rb:24:in `setup'
        from /home/pi/.rbenv/versions/3.1.2/lib/ruby/3.1.0/bundler/inline.rb:71:in `block in gemfile'
        from /home/pi/.rbenv/versions/3.1.2/lib/ruby/3.1.0/bundler/settings.rb:131:in `temporary'
        from /home/pi/.rbenv/versions/3.1.2/lib/ruby/3.1.0/bundler/inline.rb:55:in `gemfile'
        from app.rb:12:in `<main>'

inline bundlerに依存gemを全て列挙すれば抑制できそうだが、、、。

  gemfile do
    source 'https://rubygems.org'
    git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
    gem 'procon_bypass_man', '0.3.10'
...

使用するrubyにインストールしているgemに複数のバージョンがあると掲題のエラーが起きてしまうっぽい。

pi@raspberrypi2[/usr/share/pbm/current]$ gem list set

*** LOCAL GEMS ***

set (1.0.4, 1.0.3, default: 1.0.2)

所感

  • bundlerのバグっぽい気もする
  • Gemfile, Gemfile.lockを添付すると起動は早くなるし、掲題のエラーは起きなはずだけど、セットアップに必要なファイルは少ない方がクールだと思うのでinline bundlerを使っている
    • inline bundlerやめるか?
@jiikko
Copy link
Member Author

jiikko commented Dec 10, 2023

新しいバージョンが出現してから初回実行時に上記のエラーが発生している?
https://rubygems.org/gems/set/versions/1.0.4

@jiikko
Copy link
Member Author

jiikko commented Dec 10, 2023

sorted_setがsetを ~> 1.0で依存を明示しているので、新しいsetが公開されたらinline bundlerのcachedに入っている古いsetとバージョンが不一致になってエラーになっていそう。
https://rubygems.org/gems/sorted_set/versions/1.0.3/dependencies

@jiikko
Copy link
Member Author

jiikko commented Dec 11, 2023

#279 で 以下を追加した。短期的には収まる気がする。
spec.add_dependency "set", "1.0.3"

@jiikko
Copy link
Member Author

jiikko commented Dec 12, 2023

再現手順

  • gem i set --version=1.0.4
gemfile(true) do # 
  source 'https://rubygems.org'
  gem 'set', '1.0.3'
end

gemfileメソッド引数のinstallオプションがtrueだと、systemに入っている最新のgemをactivatedするので、1.0.3を明示すると You have already activated set 1.0.3, but your Gemfile requires set 1.0.4. Prepending bundle exec to your command may solve this. (Gem::LoadError) が起きちゃう。

(inline bundlerはsystemにgemをインストールしている。)

@jiikko
Copy link
Member Author

jiikko commented Jan 21, 2024

Gemfileを使うように #290 で作業中

@jiikko
Copy link
Member Author

jiikko commented Jan 21, 2024

#282 と被っているのでこのissueはクローズする

@jiikko jiikko closed this as completed Jan 21, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant