Подсказка № 1. Лучше писать без .
Это зависит от каталога, из которого вы запускаете приложение.
Например, у вас есть каталог , папка . И у вас есть два файла:
file.rb
puts "I'm file.rb"
main.rb
require './file.rb'
Если Вы запускаете свое приложение из папки - все в порядке:
folder$ ruby main.rb
I'm file.rb
Но если вы запустите его с высокого уровня - это будет ошибка:
folder$ cd ..
:~$ ruby folder/main.rb
kernel_require.rb:55:in `require': cannot load such file -- ./file.rb (LoadError)
Но как писать в этом случае?
Подсказка № 2. Вы можете использовать специальный метод
main.rb
require "./#{__dir__}/file.rb"
Теперь все в порядке:
~$ ruby folder/main.rb
I'm file.rb
folder$ ruby main.rb
I'm file.rb
[1130 Но вы можете написать это лучше.
Подсказка № 3. Вы можете использовать require_relative
main.rb
require_relative 'file.rb'
И даже лучше.
main.rb
require_relative 'file'
Руби понимает это.
~$ ruby folder/main.rb
I'm file.rb
folder$ ruby main.rb
I'm file.rb
Надеюсь, это поможет вам.
Это будет искать то, что значение "k", и рассматривайте его как имя переменной. Эти два образца являются тем же:
echo ($obj->myvar);
####
$k = "myvar";
echo ($obj->$k);