Обнаружение источника связывания в Gemfile

Я стараюсь использовать RubyMine как можно чаще, а RubyMine иногда просить драгоценные камни, которые я не буду использовать ни для чего на себе (RubyMine делает).

Можно ли обнаружить в Gemfile, что я собираю RubyMine? или в целом: возможно ли определить инструмент, из которого я связываюсь (Terminal, iTerm, RubyMine, TeamCity)?

Я знаю, что есть определенная платформа рубина в качестве условия для драгоценного камня. То, что я ищу, чтобы поместить в свой Gemfile, выглядит примерно так:

tool :rubymine do
  gem 'minitest-reporters'
  gem 'ruby-debug'
end

В результате, когда я запущу пакет из НАПРИМЕР RubyMine, я установлю minitest-reporters и ruby-debug, НО мой коллега, который делает пакет из терминала, НЕ установит эти драгоценные камни.


person Mailo Světel    schedule 07.01.2014    source источник
comment
Извините, я вообще не понимаю вашего вопроса. Чего именно вы хотите добиться?   -  person phoet    schedule 07.01.2014
comment
Вопрос очень сложный для понимания. Может быть, вы захотите немного больше изучить Ruby, прежде чем использовать IDE, которая полностью автоматизирует все и еще больше усложнит вам понимание того, что она делает? Более того, имейте в виду, что вы пишете Gemfile, а не RubyMine. Поэтому вы должны знать, какие драгоценные камни вы используете.   -  person Simone Carletti    schedule 07.01.2014
comment
phoet: simone: Я не хочу, чтобы драгоценные камни устанавливались только в том случае, если они необходимы. Другими словами, коллега, который не использует RubyMine, не будет устанавливать гемы, так как они ему не нужны.   -  person Mailo Světel    schedule 07.01.2014
comment
simone: я знаю, что пишу Gemfile. RubyMine был просто примером. В моем вопросе есть и другие примеры;)   -  person Mailo Světel    schedule 07.01.2014
comment
Я добавил к вопросу расширенное описание своих ожиданий, надеюсь, это поможет всем понять мой вопрос.   -  person Mailo Světel    schedule 07.01.2014
comment
Взломать! OS X: puts "running from " + `vmmap #{Process.ppid}`.match(/Virtual Memory Map of process \d+ \((.+)\)/)[1] (в Linux вы можете смотреть на /proc/#{ppid}/cmdline вместо vmmap.   -  person John Ledbetter    schedule 08.01.2014


Ответы (2)


Как правило, ответ на этот вопрос заключается в установке дополнительных драгоценных камней с помощью gem install вместо того, чтобы помещать их в Gemfile.

Если RubyMine полагается на то, что Bundler сможет найти эти драгоценные камни во время выполнения, я бы сказал, что это ошибка.

person regularfry    schedule 07.01.2014

Хорошо, здесь я нашел несколько способов сказать, что вы работаете изнутри RubyMine.

(помещает это в ваш Gemfile для проверки)

puts [
        ORIGINAL_ENV['OLDPWD'],
        ORIGINAL_ENV['RM_INFO'],
        ORIGINAL_ENV['RUBYLIB'],
        ORIGINAL_ENV['RUBYMINE_TESTUNIT_REPORTER'],
        ORIGINAL_ENV['TEAMCITY_RAKE_RUNNER_MODE'],
        ORIGINAL_ENV['TEAMCITY_RAKE_RUNNER_USED_FRAMEWORKS'],
        ORIGINAL_ENV['XPC_SERVICE_NAME']
]

Так, например, таким образом я могу установить гемы для RubyMine, только когда это действительно необходимо.

group :development do
  # Access an IRB console on exception pages or by using <%= console %> anywhere in the code.
  gem 'web-console'
  gem 'listen', '~> 3.0.5'
  # Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring
  gem 'spring'
  gem 'spring-watcher-listen', '~> 2.0.0'

  if ORIGINAL_ENV && ORIGINAL_ENV['TEAMCITY_RAKE_RUNNER_MODE']
    gem 'debase'
  end
end

Плохо только то, что это изменит Gemfile.lock

person Mailo Světel    schedule 22.08.2016