标签: gem

检查是否从 bash 脚本安装了 ruby​​ gem

我需要从 bash 脚本中检查是否安装了某些 Ruby gem。

我以为我可以做类似的事情

if ! gem list <name>; then do_stuff; fi
Run Code Online (Sandbox Code Playgroud)

但是在命令行上使用测试echo $?表明gem list <name>无论是否实际找到名称都返回 0。

这是否意味着我必须使用 grep 来过滤 gem list 的输出,或者有没有更好的方法可以检查是否安装了 gem?

bash gem

14
推荐指数
2
解决办法
1万
查看次数

RVM 不接收 /etc/gemrc

在系统范围的 RVM 中......这是我的 /etc/gemrc

---
gem:--no-ri --no-rdoc
Run Code Online (Sandbox Code Playgroud)

这是系统 gem env

 GEM PATHS:
     - /usr/lib/ruby/gems/1.9.1
     - /home/${USER}/.gem/ruby/1.9.1
    GEM CONFIGURATION:
         - :update_sources => true
         - :verbose => true
         - :benchmark => false
         - :backtrace => false
         - :bulk_threshold => 1000
         - "gem" => "--no-ri --no-rdoc"
Run Code Online (Sandbox Code Playgroud)

这是 rvm 中的那个

GEM PATHS:
 - /usr/local/rvm/gems/ruby-1.9.2-p180
 - /usr/local/rvm/gems/ruby-1.9.2-p180@global
GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :benchmark => false
     - :backtrace => false
     - :bulk_threshold => 1000
Run Code Online (Sandbox Code Playgroud)

和 rvm @global

    GEM PATHS:
     - …
Run Code Online (Sandbox Code Playgroud)

ubuntu ruby rubygems gem rvm

7
推荐指数
2
解决办法
3173
查看次数

gem 安装附加 CPPFLAGS / LDFLAGS

我似乎无法开始gem install charlock_holmes -v 0.6.9.4工作。

我可以手动编辑./ext/charlock_holmes/extconf.rb并包括

$INCFLAGS << " -I/usr/local/include "
$LDFLAGS << " -L/usr/local/lib "
Run Code Online (Sandbox Code Playgroud)

make干净地执行并通过重写规范文件

gem spec ../../cache/charlock_holmes-0.6.9.4.gem --ruby > ../../specifications/charlock_holmes-0.6.9.4.gemspec 
Run Code Online (Sandbox Code Playgroud)

并使其成为当地的瑰宝。

  1. 如何让 gem 安装?
  2. 必须有更好的方法来附加什么数量CPPFLAGSLDFLAGS到 gem 安装。

ruby gem

3
推荐指数
1
解决办法
4589
查看次数

移动后Redmine无法启动

从一台服务器移动到另一台服务器时,我遇到了 redmine(或 ruby​​ 配置)的问题

redmine@dirty:~/www$ ruby script/rails server webrick -e production
/usr/local/rvm/gems/ruby-2.0.0-p353/gems/mysql2-0.3.14/lib/mysql2.rb:8:in `require': Incorrect MySQL client library version! This gem was compiled for 5.5.17 but the client library is 5.1.59. (RuntimeError)
        from /usr/local/rvm/gems/ruby-2.0.0-p353/gems/mysql2-0.3.14/lib/mysql2.rb:8:in `<top (required)>'
        from /usr/local/rvm/gems/ruby-2.0.0-p353@global/gems/bundler-1.5.2/lib/bundler/runtime.rb:76:in `require'   
        from /usr/local/rvm/gems/ruby-2.0.0-p353@global/gems/bundler-1.5.2/lib/bundler/runtime.rb:76:in `block (2 levels) in require'
        from /usr/local/rvm/gems/ruby-2.0.0-p353@global/gems/bundler-1.5.2/lib/bundler/runtime.rb:72:in `each'
        from /usr/local/rvm/gems/ruby-2.0.0-p353@global/gems/bundler-1.5.2/lib/bundler/runtime.rb:72:in `block in require'
        from /usr/local/rvm/gems/ruby-2.0.0-p353@global/gems/bundler-1.5.2/lib/bundler/runtime.rb:61:in `each'
        from /usr/local/rvm/gems/ruby-2.0.0-p353@global/gems/bundler-1.5.2/lib/bundler/runtime.rb:61:in `require'   
        from /usr/local/rvm/gems/ruby-2.0.0-p353@global/gems/bundler-1.5.2/lib/bundler.rb:131:in `require'
        from /home/redmine/redmine-2.4/config/application.rb:7:in `<top (required)>'
        from /usr/local/rvm/gems/ruby-2.0.0-p353/gems/railties-3.2.16/lib/rails/commands.rb:53:in `require'
        from /usr/local/rvm/gems/ruby-2.0.0-p353/gems/railties-3.2.16/lib/rails/commands.rb:53:in `block in <top (required)>'
        from /usr/local/rvm/gems/ruby-2.0.0-p353/gems/railties-3.2.16/lib/rails/commands.rb:50:in `tap'
        from /usr/local/rvm/gems/ruby-2.0.0-p353/gems/railties-3.2.16/lib/rails/commands.rb:50:in …
Run Code Online (Sandbox Code Playgroud)

mysql redmine ruby ruby-on-rails gem

2
推荐指数
1
解决办法
648
查看次数

安装 `mysql` gem 以在 `chef-client` 中使用吗?

我正在尝试使用厨师部署 Rails 应用程序,对于 mysql 食谱来创建数据库,它需要mysqlgem。所述mysql宝石安装系统范围通过使用Ubuntu的软件包,但是这不是通过使用chef-client从运行/opt/chef/embedded

我试过添加这个:

chef_gem 'mysql' do
    action :nothing
end.run_action(:install)
Run Code Online (Sandbox Code Playgroud)

但这需要libmysqlclient-dev安装 Ubuntu 包。因此我也在之前添加了这个:

package 'libmysqlclient-dev' do
    action :nothing
end.run_action(:install)
Run Code Online (Sandbox Code Playgroud)

但这是在apt配方更新 apt 存储库之前完成的,因此安装libmysqlclient-dev失败。

这些“黑客”看起来很难看,我无法找到apt-get update在正确的时间运行它们的方法。

有人可以帮我找到正确的(最像厨师的)方法来解决我的问题(实际问题是使用application食谱创建数据库)?

更新

我已经能够解决这个食谱的问题作为一个丑陋的黑客......我仍在寻找更好的解决方案:

execute "apt-get update" do
  ignore_failure true
  action :nothing
end.run_action(:run)

node.set['build_essential']['compiletime'] = true
include_recipe "build-essential"

%w{build-essential mysql-client libmysqlclient-dev}.each do |p|
  package p do
    action :nothing
  end.run_action(:install)
end

chef_gem 'mysql' do
  action :nothing
end.run_action(:install)
Run Code Online (Sandbox Code Playgroud)

mysql chef gem

1
推荐指数
1
解决办法
3248
查看次数

标签 统计

gem ×5

ruby ×3

mysql ×2

bash ×1

chef ×1

redmine ×1

ruby-on-rails ×1

rubygems ×1

rvm ×1

ubuntu ×1