IBM_DB Gem问题

时间:2015-11-20 16:36:04

标签: ruby-on-rails-4 db2 ibm-cloud devops

当我尝试将我的应用部署到Bluemix时,我收到以下错误。我的manifest.yml文件如下所示。

applications:
- path: .
  memory: 512M
  instances: 1
  domain: mybluemix.net
  name: KnowYourBrand
  host: kyb
  command: bundle exec rake db:setup && bundle exec rails s -p $PORT
  disk_quota: 1024M
  services:
  - Personality Insights-n2
  - Tone Analyzer-uu
  - Insights for Twitter-bt
  - kybSQLDB
  - AlchemyAPI-tw
  buildpack: https://github.com/ibmdb/db2rubybuildpack
  

2015-11-17T13:04:51.55-0600 [App / 0] ERR LoadError:libdb2.so.1:       无法打开共享对象文件:没有这样的文件或目录 -       / home / vcap / app / vendor / bundle / ru by / 2.2.0 / extensions / x86_64-linux /       2.2.0静态/ IBM_DB-2.6.1 / ibm_db.so

我的gemfile如下:

source 'http://rubygems.org'

# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
gem 'rails', '4.1.8'
gem 'backbone-on-rails'

gem 'whenever', :require => false

group :production do
  gem 'ibm_db'
  gem 'rails_12factor'
end

# Use SCSS for stylesheets
gem 'sass-rails', '~> 4.0.3'
# Use Uglifier as compressor for JavaScript assets
gem 'uglifier', '>= 1.3.0'
# Use CoffeeScript for .js.coffee assets and views
gem 'coffee-script-source', '1.8.0'
gem 'coffee-rails', '~> 4.0.0'
# See https://github.com/sstephenson/execjs#readme for more supported runtimes
# gem 'therubyracer',  platforms: :ruby

# Use jquery as the JavaScript library
gem 'jquery-rails'
# Turbolinks makes following links in your web application faster. Read more: https://github.com/rails/turbolinks
gem 'turbolinks'
# Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder
gem 'jbuilder', '~> 2.0'
# bundle exec rake doc:rails generates the API under doc/api.
gem 'sdoc', '~> 0.4.0',          group: :doc

# Use ActiveModel has_secure_password
gem 'bcrypt-ruby', '>= 3.1.2', :platform => :ruby

gem 'httparty'

gem 'figaro'
gem "cf-autoconfig", "~> 0.2.1"

# Use unicorn as the app server
# gem 'unicorn'

# Use Capistrano for deployment
# gem 'capistrano-rails', group: :development

group :development do
  gem 'byebug'
  gem 'annotate'
  gem 'better_errors'
  gem 'binding_of_caller'
  gem 'pry-rails'
  # Use sqlite3 as the database for Active Record
  gem 'sqlite3'
end

# Use debugger
# gem 'debugger', group: [:development, :test]

# Windows does not include zoneinfo files, so bundle the tzinfo-data gem
gem 'tzinfo-data', platforms: [:mingw, :mswin]

问题是什么?我尝试将ibm_db版本设置为旧版本,但这也没有解决问题。

  

未设置环境变量IBM_DB_HOME。把它设置为你的   DB2 / IBM_Data_Server_驱动程序安装目录并重试gem   安装。

在不必在本地计算机上安装驱动程序的情况下,处理此问题的最佳方法是什么?我只是想将它部署到Bluemix。

4 个答案:

答案 0 :(得分:0)

我不完全确定,但您似乎需要设置IBM_DB_HOME环境变量。您可以configure environment variables either using the cf set-env command, in your manifest.yml file或在Bluemix仪表板中。我对ibm_db gem或DB2不太熟悉,不知道该环境变量应该是什么值,但是this README in the gem可能会有所帮助(在页面中搜索“IBM_DB_HOME”)。

答案 1 :(得分:0)

您可以在ibm_db git issue repository here

中跟踪此问题

答案 2 :(得分:0)

ibm_db gem会在安装gem时自动下载所需的文件。但是,在Bluemix中安装ibm_db gem之后,它无法链接下载的库。

要解决此问题,请按以下步骤操作。

<强>步骤1 即可。在使用迁移推送应用程序时,传递一个命令来设置LD_LIBRARY_PATH环境变量,如下所示。

  

cf推送BlogApp2 -c“导出   LD_LIBRARY_PATH = /家庭/ VCAP /应用/供应商/包/红宝石/ 2.2.0 /宝石/ IBM_DB-3.0.0 / lib目录/ clidriver中/ lib目录:$ LD_LIBRARY_PATH;   bundle exec rake db:migrate“

注意:在commad上运行时,请指定您在gemfile中指定的Ruby版本和ibm_db版本。您还可以在LoadError中引用路径:libdb2.so在Bluemix上的服务器日志中看到的错误消息。 推送应用程序后,您将看到迁移已运行,您还将看到预期的数据库连接错误。

<强>步骤-2 即可。在应用程序中添加以下环境变量。登录bluemix - &gt;选择你的Ruby应用程序 - &gt;点击Environment Variables manu - &gt;选择用户定义。 - &GT;添加以下变量 - &gt;保存。

名称 - LD_LIBRARY_PATH

- /home/vcap/app/vendor/bundle/ruby/2.2.0/gems/ibm_db-3.0.0/lib/clidriver/lib:$LD_LIBRARY_PATH [Refer步骤1为值]

在Bluemix中将LD_LIBRARY_PATH添加到您的应用程序后,您可以从cf命令推送您的应用程序,如下所示。 cf push BlogApp2 -c“null”

现在您的应用程序将连接到SQLDB。

谢谢, Arvind的

答案 3 :(得分:0)

我在为使用ibm_db的node.js服务器设置Docker映像时遇到了这篇文章。我知道这是一个红宝石应用程序,但是此信息可能会帮助下一个人。这是使node_db可用并正常工作的Dockerfile。

    FROM node:10

# Create app directory
WORKDIR .

# need to download the ibm drivers and set IBM_DB_HOME
ENV NODE_TLS_REJECT_UNAUTHORIZED=0
RUN mkdir /ibmdriver
RUN curl https://public.dhe.ibm.com/ibmdl/export/pub/software/data/db2/drivers/odbc_cli/linuxx64_odbc_cli.tar.gz \
  | tar -xzf - -C /ibmdriver/
ENV IBM_DB_HOME /ibmdriver/clidriver
ENV LD_LIBRARY_PATH $LD_LIBRARY_PATH:$IBM_DB_HOME/lib



# Install app dependencies
# A wildcard is used to ensure both package.json AND package-lock.json are copied
# where available ([email protected]+)
COPY package*.json ./

RUN npm install
# If you are building your code for production
# RUN npm install --only=production

# Bundle app source
COPY . .

ENV BCCB_DECISIONTREE_SERVICE_PORT 3000

EXPOSE 3000
CMD [ "npm", "start" ]