Попробуйте использовать вычисленные стили:
window.getComputedStyle(document.getElementById("X")).backgroundColor
Я бы сказал, пойти с $ :. unshift File.dirname (__ FILE __)
поверх другого, просто потому, что я видел гораздо большее использование этого в коде, чем $ LOAD_PATH
, и он тоже короче!
I'm not too fond on the 'quick-and-dirty' way.
Anyone new to Ruby will be pondering what $:.
is.
I find this more obvious.
libdir = File.dirname(__FILE__)
$LOAD_PATH.unshift(libdir) unless $LOAD_PATH.include?(libdir)
Or if I care about having the full path...
libdir = File.expand_path(File.dirname(__FILE__))
$LOAD_PATH.unshift(libdir) unless $LOAD_PATH.include?(libdir)
UPDATE 2009/09/10
As of late I've been doing the following:
$:.unshift(File.expand_path(File.dirname(__FILE__))) unless
$:.include?(File.dirname(__FILE__)) || $:.include?(File.expand_path(File.dirname(__FILE__)))
I've seen it in a whole bunch of different ruby projects while browsing GitHub.
Seems to be the convention?
Путь загрузки Ruby очень часто записывается как $:, но то, что он короткий, не улучшает его. Если вы предпочитаете ясность уму или если краткость сама по себе вызывает у вас зуд, вам не нужно делать это только потому, что все остальные. Передайте привет ...
$LOAD_PATH
... и попрощайтесь с ...
# I don't quite understand what this is doing...
$:
Если вы наберете script / console
в своем проекте Rails и введете $:
, вы получите массив, который включает все каталоги, необходимые для загрузить Ruby. Вывод из этого небольшого упражнения состоит в том, что $:
- это массив. В таком случае вы можете выполнять с ним функции, такие как добавление других каталогов в начало с помощью метода unshift
или оператора <<
. Как вы подразумевали в своем заявлении, $:
и $ LOAD_PATH
- это одно и то же.
Недостаток быстрого и грязного способа, как вы упомянули, заключается в следующем: если у вас уже есть каталог в вашем загрузочном пути, он будет повторяться.
Пример:
У меня есть созданный мной плагин, который называется todo. Моя директория имеет такую структуру:
/---vendor | |---/plugins | |---/todo | |---/lib | |---/app | |---/models |---/controllers | |---/rails | |---init.rb
В файле init.rb я ввел следующий код:
## In vendor/plugins/todo/rails/init.rb
%w{ models controllers models }.each do |dir|
path = File.expand_path(File.join(File.dirname(__FILE__), '../lib', 'app', dir))
$LOAD_PATH << path
ActiveSupport::Dependencies.load_paths << path
ActiveSupport::Dependencies.load_once_paths.delete(path)
end
Обратите внимание, как я говорю блоку кода выполнять действия внутри блока со строками «модели», «контроллеры» и «модели», где я повторяю «модели». (К вашему сведению, % w {...}
- это просто еще один способ указать Ruby, что нужно хранить массив строк). Когда я запускаю скрипт / консоль
, я набираю следующее:
>> puts $:
И я набираю его, чтобы было легче читать содержимое строки. В результате я получаю:
... ... ./Users/Me/mySites/myRailsApp/vendor/plugins/todo/lib/app/models ./Users/Me/mySites/myRailsApp/vendor/plugins/todo/lib/app/controllers ./Users/Me/mySites/myRailsApp/vendor/plugins/todo/lib/app/models
Как видите, хотя это самый простой пример, который я мог бы создать при использовании проекта, над которым я сейчас работаю, если вы не будете осторожны, быстрый и грязный способ приведет к повторению пути. Более длинный способ проверит повторяющиеся пути и убедится, что они не встречаются.
Если вы опытный программист на Rails, вы, вероятно, имеете очень хорошее представление о том, что вы делаете. повторять и, вероятно, не совершить ошибку, повторяя пути. Если вы новичок, я бы пошел дальше, пока вы действительно не поймете, что делаете.