jf/rbenv-gemset

Please provide documentation how to use newly created gemset.

bigos opened this issue · 9 comments

bigos commented

I can't figure out how to make terminal use my new gemset. Your documentation does not provide the expected information.

jf commented

what sort of expected information are you looking for? can you document this?

bigos commented

How do I create a gemset for my ruby version and then make it current for subsequent terminal commands?

I want to install rails in home folder without the permission error saying that it wants to install gems in the root folder?

why does
$ rbenv gemset active
new_gemset global

give two gemsets? How do I make only one gemset active?

bigos commented
jacek@jacek-ixtreme-M5850:~/Temp$ rbenv gemset create 3.2.2 newest
created newest for 3.2.2
jacek@jacek-ixtreme-M5850:~/Temp$ rbenv gemset active
newest global
jacek@jacek-ixtreme-M5850:~/Temp$ rbenv gemset list
3.2.2:
  newest
jacek@jacek-ixtreme-M5850:~/Temp$ cd ..
jacek@jacek-ixtreme-M5850:~$ cd ./Temp
jacek@jacek-ixtreme-M5850:~/Temp$ rbenv gemset active
newest global
jacek@jacek-ixtreme-M5850:~/Temp$ gem install rails
ERROR:  While executing gem ... (Errno::EACCES)
    Permission denied @ dir_s_mkdir - /newest
jacek@jacek-ixtreme-M5850:~/Temp$ RBENV_GEMSETS="newest" gem install rails
ERROR:  While executing gem ... (Errno::EACCES)
    Permission denied @ dir_s_mkdir - /newest
bigos commented
jacek@jacek-ixtreme-M5850:~/Temp$ echo "trying again"
trying again
jacek@jacek-ixtreme-M5850:~/Temp$ rbenv local 3.2.2
jacek@jacek-ixtreme-M5850:~/Temp$ rbenv versions
  system
  3.0.2
  3.1.4
* 3.2.2 (set by /home/jacek/Temp/.ruby-version)
jacek@jacek-ixtreme-M5850:~/Temp$ cd ~
jacek@jacek-ixtreme-M5850:~$ rbenv gemset list
3.2.2:
  newest
jacek@jacek-ixtreme-M5850:~$ rbenv gemset delete 3.2.2 newest
deleted newest from 3.2.2
jacek@jacek-ixtreme-M5850:~$ rbenv gemset list
jacek@jacek-ixtreme-M5850:~$ cd ~
jacek@jacek-ixtreme-M5850:~$ rm -rv ~/Temp
removed '/home/jacek/Temp/.ruby-version'
removed '/home/jacek/Temp/.ruby-gemset'
removed directory '/home/jacek/Temp'
jacek@jacek-ixtreme-M5850:~$ mkdir ~/Temp
jacek@jacek-ixtreme-M5850:~$ cd ~/Temp
jacek@jacek-ixtreme-M5850:~/Temp$ echo trying_again > .ruby-gemset
jacek@jacek-ixtreme-M5850:~/Temp$ echo "3.2.2" > .ruby-version
jacek@jacek-ixtreme-M5850:~/Temp$ cd ~
jacek@jacek-ixtreme-M5850:~$ cd ~/Temp
jacek@jacek-ixtreme-M5850:~/Temp$ rbenv gemset active
trying_again global
jacek@jacek-ixtreme-M5850:~/Temp$ rbenv gemset list
jacek@jacek-ixtreme-M5850:~/Temp$ rbenv gemset create 3.2.2 trying_again
created trying_again for 3.2.2
jacek@jacek-ixtreme-M5850:~/Temp$ cd ~/Temp
jacek@jacek-ixtreme-M5850:~/Temp$ rbenv gemset active
trying_again global
jacek@jacek-ixtreme-M5850:~/Temp$ rbenv versions
  system
  3.0.2
  3.1.4
* 3.2.2 (set by /home/jacek/Temp/.ruby-version)
jacek@jacek-ixtreme-M5850:~/Temp$ gem install rails
Fetching railties-7.0.7.2.gem
Fetching rack-2.2.8.gem
bigos commented

Can this be converted into documentation?

I guess part of the surprise was rbenv versions having the * next to system.

Do I need to do that if I want to use the newly created gem in another folder?

jacek@jacek-ixtreme-M5850:~$ rbenv local 3.2.2
jacek@jacek-ixtreme-M5850:~$ RBENV_GEMSETS="trying_again" gem install rails
bigos commented

Now https://github.com/jf/rbenv-gemset#usage-the-advanced-neckbeard-version makes more sense, but I would write it differently.

If I have time I may write how I would progress from a gemset creation to creation of a rails project.

jf commented

Now https://github.com/jf/rbenv-gemset#usage-the-advanced-neckbeard-version makes more sense, but I would write it differently.

that's great... did you not read the documentation?

bigos commented

I did not understand the documentation. Possibly because rbenv local confusion. I used to use rvm and there you had command to use required ruby and gemset.

My desired workflow is: In projects folder, create project1 folder and create .ruby-verion and .ruby-gemset files and create the gemset and install gem rails. Then go from project1 folder to parent projects and run rails new ./project1 with the expected ruby and gemset.

To achieve that I need:

rbenv local 3.2.2
RBENV_GEMSETS="project1" gem install rails

The problem is your documentation does not mention rbenv local. In parent folder rbenv versions maybnot be what you expect.

bigos commented

I meant workflow like this. Now I understand the process, so I can think of a script to make it easier.

jacek@jacek-Lenovo-YOGA-3-Pro-1370:/tmp$ rbenv gemset create 3.1.3 newer
created newer for 3.1.3
jacek@jacek-Lenovo-YOGA-3-Pro-1370:/tmp$ rbenv gemset active
no active gemsets
jacek@jacek-Lenovo-YOGA-3-Pro-1370:/tmp$ rbenv local 3.1.3
jacek@jacek-Lenovo-YOGA-3-Pro-1370:/tmp$ RUBY_GEMSETS="newer" gem install rails
Fetching minitest-5.20.0.gem
Fetching tzinfo-2.0.6.gem
Parsing documentation for rails-7.0.7.2
Installing ri documentation for rails-7.0.7.2

36 gems installed
jacek@jacek-Lenovo-YOGA-3-Pro-1370:/tmp$ RUBY_GEMSETS="newer" rails new ./newer
      create
      create  README.md
      create  Rakefile
      create  .ruby-version

Pin all controllers
Appending: pin_all_from "app/javascript/controllers", under: "controllers"
      append  config/importmap.rb
jacek@jacek-Lenovo-YOGA-3-Pro-1370:/tmp$
jacek@jacek-Lenovo-YOGA-3-Pro-1370:/tmp$ cd ./newer/
jacek@jacek-Lenovo-YOGA-3-Pro-1370:/tmp/newer$ rbenv gemset active
no active gemsets
jacek@jacek-Lenovo-YOGA-3-Pro-1370:/tmp/newer$ ruby --version
ruby 3.1.3p185 (2022-11-24 revision 1a6b16756e) [x86_64-linux]
jacek@jacek-Lenovo-YOGA-3-Pro-1370:/tmp/newer$ echo newer > .ruby-gemset
jacek@jacek-Lenovo-YOGA-3-Pro-1370:/tmp/newer$ rbenv gemset active
newer global
jacek@jacek-Lenovo-YOGA-3-Pro-1370:/tmp/newer$ cd ..
jacek@jacek-Lenovo-YOGA-3-Pro-1370:/tmp$ cd ./newer/
jacek@jacek-Lenovo-YOGA-3-Pro-1370:/tmp/newer$ rbenv versions
  system
* 3.1.3 (set by /tmp/newer/.ruby-version)
  3.2.1
  3.2.2
jacek@jacek-Lenovo-YOGA-3-Pro-1370:/tmp/newer$ rbenv gemset active
newer global