Bundler::GemNotFound: Could not find logstash-input-jdbc-4.2.1 in any of the sources 9 (logstash,elasticsearch) - mysql

I am working with elasticsearch and im also trying to connect mysql with elasticsearch via logstash. I created the config file and when i run it i get the following error
Bundler::GemNotFound: Could not find logstash-input-jdbc-4.2.1 in any of the sources
materialize at C:/Users/esmer/E/ELK/logstash-5.5.1/vendor/bundle/jruby/1.9/gems/bundler-1.9.10/lib/bundler/spec_set.rb:92
map! at org/jruby/RubyArray.java:2446
materialize at C:/Users/esmer/E/ELK/logstash-5.5.1/vendor/bundle/jruby/1.9/gems/bundler-1.9.10/lib/bundler/spec_set.rb:85
specs at C:/Users/esmer/E/ELK/logstash-5.5.1/vendor/bundle/jruby/1.9/gems/bundler-1.9.10/lib/bundler/definition.rb:132
specs_for at C:/Users/esmer/E/ELK/logstash-5.5.1/vendor/bundle/jruby/1.9/gems/bundler-1.9.10/lib/bundler/definition.rb:177
requested_specs at C:/Users/esmer/E/ELK/logstash-5.5.1/vendor/bundle/jruby/1.9/gems/bundler-1.9.10/lib/bundler/definition.rb:166
requested_specs at C:/Users/esmer/E/ELK/logstash-5.5.1/vendor/bundle/jruby/1.9/gems/bundler-1.9.10/lib/bundler/environment.rb:18
setup at C:/Users/esmer/E/ELK/logstash-5.5.1/vendor/bundle/jruby/1.9/gems/bundler-1.9.10/lib/bundler/runtime.rb:13
setup at C:/Users/esmer/E/ELK/logstash-5.5.1/vendor/bundle/jruby/1.9/gems/bundler-1.9.10/lib/bundler.rb:122
setup! at C:/Users/esmer/E/ELK/logstash-5.5.1/lib/bootstrap/bundler.rb:67
(root) at C:\Users\esmer\E\ELK\logstash-5.5.1\lib\bootstrap\environment.rb:67code here
the config file's code is below:
input {
jdbc {
jdbc_connection_string => "jdbc:mysql://localhost:80/temperature"
jdbc_user => "admin1"
jdbc_password => ""
jdbc_driver_library => "c:\e\elk\logstash-5.5.1\lib\mysql-connector-java-5.1.43-bin.jar"
jdbc_driver_class => "com.mysql.jdbc.Driver"
statement => "SELECT * FROM temperature"
jdbc_paging_enabled => "true"
jdbc_page_size => "50000"
}
}
output {
stdout {codec => rubydebug}
elasticsearch {
hosts => "localhost:9200"
index => "temperature"
document_type => "data"
}
}
Gemfile :
# This is a Logstash generated Gemfile.
# If you modify this file manually all comments and formatting will be lost.
source "https://rubygems.org"
gem "logstash-core", :path => "./logstash-core"
gem "logstash-core-plugin-api", :path => "./logstash-core-plugin-api"
gem "paquet", "~> 0.2.0"
gem "ruby-progressbar", "~> 1.8.1"
gem "builder", "~> 3.2.2"
gem "file-dependencies", "0.1.6"
gem "ci_reporter_rspec", "1.0.0", :group => :development
gem "simplecov", :group => :development
gem "tins", "1.6", :group => :development
gem "rspec", "~> 3.1.0", :group => :development
gem "logstash-devutils", :group => :development
gem "benchmark-ips", :group => :development
gem "octokit", "3.8.0", :group => :build
gem "stud", "~> 0.0.22", :group => :build
gem "fpm", "~> 1.3.3", :group => :build
gem "rubyzip", "~> 1.1.7", :group => :build
gem "gems", "~> 0.8.3", :group => :build
gem "rack", "1.6.6"
gem "rack-test", :require => "rack/test", :group => :development
gem "flores", "~> 0.0.6", :group => :development
gem "term-ansicolor", "~> 1.3.2", :group => :development
gem "docker-api", "1.31.0", :group => :development
gem "rest-client", "1.8.0", :group => :development
gem "pleaserun", "~>0.0.28"
gem "logstash-input-heartbeat"
gem "logstash-codec-collectd"
gem "logstash-output-xmpp"
gem "logstash-codec-cef"
gem "logstash-codec-dots"
gem "logstash-codec-edn"
gem "logstash-codec-edn_lines"
gem "logstash-codec-fluent"
gem "logstash-codec-es_bulk"
gem "logstash-codec-graphite"
gem "logstash-codec-json"
gem "logstash-codec-json_lines"
gem "logstash-codec-line"
gem "logstash-codec-msgpack"
gem "logstash-codec-multiline"
gem "logstash-codec-netflow", "~> 3.4.0"
gem "logstash-codec-plain"
gem "logstash-codec-rubydebug"
gem "logstash-filter-clone"
gem "logstash-filter-csv"
gem "logstash-filter-date"
gem "logstash-filter-dns"
gem "logstash-filter-drop"
gem "logstash-filter-fingerprint"
gem "logstash-filter-geoip", "~> 4.2.0"
gem "logstash-filter-grok"
gem "logstash-filter-json"
gem "logstash-filter-kv"
gem "logstash-filter-metrics"
gem "logstash-filter-mutate"
gem "logstash-filter-ruby"
gem "logstash-filter-sleep"
gem "logstash-filter-split"
gem "logstash-filter-syslog_pri"
gem "logstash-filter-throttle"
gem "logstash-filter-urldecode"
gem "logstash-filter-useragent", "~> 3.1.0"
gem "logstash-filter-uuid"
gem "logstash-filter-xml"
gem "logstash-input-couchdb_changes"
gem "logstash-input-elasticsearch"
gem "logstash-input-exec"
gem "logstash-input-file"
gem "logstash-input-ganglia"
gem "logstash-input-gelf"
gem "logstash-input-generator"
gem "logstash-input-graphite"
gem "logstash-input-http"
gem "logstash-input-http_poller"
gem "logstash-input-imap"
gem "logstash-input-irc"
gem "logstash-input-jdbc"
gem "logstash-input-log4j"
gem "logstash-input-lumberjack"
gem "logstash-input-pipe"
gem "logstash-input-rabbitmq"
gem "logstash-input-redis"
gem "logstash-input-s3"
gem "logstash-input-snmptrap"
gem "logstash-input-sqs"
gem "logstash-input-stdin"
gem "logstash-input-syslog"
gem "logstash-input-tcp", "~> 4.1.0"
gem "logstash-input-twitter"
gem "logstash-input-udp"
gem "logstash-input-unix"
gem "logstash-input-xmpp"
gem "logstash-input-kafka", "~> 5"
gem "logstash-input-beats", "~> 3.0", ">= 3.1.18"
gem "logstash-output-cloudwatch"
gem "logstash-output-csv"
gem "logstash-output-elasticsearch"
gem "logstash-output-file"
gem "logstash-output-graphite"
gem "logstash-output-http"
gem "logstash-output-irc"
gem "logstash-output-kafka", "~> 5"
gem "logstash-output-nagios"
gem "logstash-output-null"
gem "logstash-output-pagerduty"
gem "logstash-output-pipe"
gem "logstash-output-rabbitmq"
gem "logstash-output-redis"
gem "logstash-output-s3"
gem "logstash-output-sns"
gem "logstash-output-sqs"
gem "logstash-output-statsd"
gem "logstash-output-stdout"
gem "logstash-output-tcp"
gem "logstash-output-udp"
gem "logstash-output-webhdfs"
gem "logstash-filter-dissect"
gem "logstash-input-dead_letter_queue"
I have tried bundle install and also tried to change the PATH but it doesnt recognise it as internal variable, don't know how to fix this.
Any suggestions ?
Thank you.

First you must install the logstash input plugin by running
bin/logstash-plugin install logstash-input-jdbc
And also If it does not help,
try
Java::com.mysql.jdbc.Driver
instead of the
com.mysql.jdbc.Driver
for the jdbc_driver_class. I had a same kind of problem with oracle when I did not use the
Java::
before the oracle.jdbc.OracleDriver as the jdbc_driver_class.

Related

Rails system tests unable to load a lib file required in a model, file loads fine in development, how can I fix this?

(From chapter 14 in 'Agile Web Development with Rails 6')
I am trying to run a system test which touches a model which requires a file from the /lib directory. The file loads fine and the code works fine on localhost in development mode, but as soon as I run the test it errors with:
Error:
OrdersTest#test_visiting_the_index:
DRb::DRbRemoteError: cannot load such file -- pago (LoadError)
app/models/order.rb:1:in `<main>'
Excerpt from the model, order.rb, that requires the file is:
require "pago"
class Order < ApplicationRecord
enum pay_type: {
"Cheque" => 0,
"Credit card" => 1,
"Purchase order" => 2
}
has_many :line_items, dependent: :destroy
validates :name, :address, :email, presence: true
validates :pay_type, inclusion: pay_types.keys
def add_line_items_from_cart(cart)
cart.line_items.each do |item|
item.cart_id = nil
line_items << item
end
end
def charge!(pay_type_params)
payment_details = {}
payment_method = nil
case pay_type
when "Cheque"
payment_method = :cheque
payment_details[:routing] = pay_type_params[:routing_number]
payment_details[:account] = pay_type_params[:account_number]
when "Credit card"
payment_method = :credit_card
month,year = pay_type_params[:expiration_date].split(//)
payment_details[:cc_num] = pay_type_params[:credit_card_number]
payment_details[:expiration_month] = month
payment_details[:expiration_year] = year
when "Purchase order"
payment_method = :po
payment_details[:po_num] = pay_type_params[:po_number]
end
payment_result = Pago.make_payment(
order_id: id,
payment_method: payment_method,
payment_details: payment_details
)
if payment_result.succeeded?
OrderMailer.received(self).deliver_later
else
raise payment_result.error
end
end
end
Excerpt from the actual /lib/pago.rb:
require "ostruct"
class Pago
def self.make_payment(order_id:,
payment_method:,
payment_details:)
case payment_method
when :cheque
Rails.logger.info "Processing cheque: " +
payment_details.fetch(:routing).to_s + "/" +
payment_details.fetch(:account).to_s
when :credit_card
Rails.logger.info "Processing credit_card: " +
payment_details.fetch(:cc_num).to_s + "/" +
payment_details.fetch(:expiration_month).to_s + "/" +
payment_details.fetch(:expiration_year).to_s
when :po
Rails.logger.info "Processing purchase order: " +
payment_details.fetch(:po_num).to_s
else
raise "Unknown payment_method #{payment_method}"
end
sleep 3 unless Rails.env.test?
Rails.logger.info "Done Processing Payment"
OpenStruct.new(succeeded?: true)
end
end
The test file that I', trying to run:
test/system/orders_test.rb
require "application_system_test_case"
class OrdersTest < ApplicationSystemTestCase
include ActiveJob::TestHelper
setup do
#order = orders(:one)
end
test "visiting the index" do
visit orders_url
assert_selector "h1", text: "Orders"
end
test "destroying an Order" do
visit orders_url
page.accept_confirm do
click_on "Destroy", match: :first
end
assert_text "Order was successfully destroyed"
end
test "check full payment with cheque flow" do
LineItem.delete_all
Order.delete_all
visit store_index_url
click_on 'Add to cart', match: :first
click_on 'Checkout'
fill_in 'order_name', with: 'Dave Thomas'
fill_in 'order_address', with: '123 Main Street'
fill_in 'order_email', with: 'dave#example.com'
assert_no_selector "#order_routing_number"
select 'Cheque', from: 'Pay type'
fill_in 'Routing #', with: '123456'
fill_in 'Account #', with: '678901'
assert_selector "#order_routing_number"
assert_selector "#order_account_number"
perform_enqueued_jobs { click_button 'Place order' }
orders = Order.all
assert_equal 1, orders.size
order = orders.first
assert_equal 'Dave Thomas', order.name
assert_equal '123 Main Street', order.address
assert_equal 'dave#example.com', order.email
assert_equal 'Cheque', order.pay_type
assert_equal 1, order.line_items.size
mail = ActionMailer::Base.deliveries.last
assert_equal ['dave#example.com'], mail.to
assert_equal 'James Kemp<from#example.com>', mail[:from].value
assert_equal 'Order received; thanks', mail.subject
end
test "check CC number for credit card payment choice" do
visit store_index_url
click_on 'Add to cart', match: :first
click_on 'Checkout'
fill_in 'order_name', with: 'Dave Thomas'
fill_in 'order_address', with: '123 Main Street'
fill_in 'order_email', with: 'dave#example.com'
assert_no_selector "#order_credit_card_number"
assert_no_selector "#order_expiration_date"
select 'Credit card', from: 'Pay type'
assert_selector "#order_credit_card_number"
assert_selector "#order_expiration_date"
end
test "check PO number for purchase order payment choice" do
visit store_index_url
click_on 'Add to cart', match: :first
click_on 'Checkout'
fill_in 'order_name', with: 'Dave Thomas'
fill_in 'order_address', with: '123 Main Street'
fill_in 'order_email', with: 'dave#example.com'
assert_no_selector "#order_po_number"
select 'Purchase order', from: 'Pay type'
assert_selector "#order_po_number"
end
end
If i run rails console require 'pago' returns true. I don't see any clues in the various config and environment files as to what the problem might be. The tutorial code seems to be char by char the same as mine. I just can't work out what's oging wrong here. Can anyone help?
My Gemfile FYI (I have bundle installed):
source 'https://rubygems.org'
git_source(:github) { |repo| "https://github.com/#{repo}.git" }
ruby '3.0.2'
# Bundle edge Rails instead: gem 'rails', github: 'rails/rails', branch: 'main'
gem 'rails', '~> 6.1.4', '>= 6.1.4.1'
# Use sqlite3 as the database for Active Record
gem 'sqlite3', '~> 1.4'
# Use Puma as the app server
gem 'puma', '~> 5.0'
# Use SCSS for stylesheets
gem 'sass-rails', '>= 6'
# Transpile app-like JavaScript. Read more: https://github.com/rails/webpacker
gem 'webpacker', '~> 5.0'
# Turbolinks makes navigating your web application faster. Read more: https://github.com/turbolinks/turbolinks
gem 'turbolinks', '~> 5'
# Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder
gem 'jbuilder', '~> 2.7'
# Use Redis adapter to run Action Cable in production
# gem 'redis', '~> 4.0'
# Use Active Model has_secure_password
# gem 'bcrypt', '~> 3.1.7'
# Use Active Storage variant
# gem 'image_processing', '~> 1.2'
# Reduces boot times through caching; required in config/boot.rb
gem 'bootsnap', '>= 1.4.4', require: false
group :development, :test do
# Call 'byebug' anywhere in the code to stop execution and get a debugger console
gem 'byebug', platforms: [:mri, :mingw, :x64_mingw]
end
group :development do
# Access an interactive console on exception pages or by calling 'console' anywhere in the code.
gem 'web-console', '>= 4.1.0'
# Display performance information such as SQL time and flame graphs for each request in your browser.
# Can be configured to work on production as well see: https://github.com/MiniProfiler/rack-mini-profiler/blob/master/README.md
gem 'rack-mini-profiler', '~> 2.0'
gem 'listen', '~> 3.3'
# Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring
gem 'spring'
end
group :test do
# Adds support for Capybara system testing and selenium driver
gem 'capybara', '>= 3.26'
gem 'selenium-webdriver'
# Easy installation and use of web drivers to run system tests with browsers
gem 'webdrivers'
end
# Windows does not include zoneinfo files, so bundle the tzinfo-data gem
gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]

Sequel::AdapterNotFound: LoadError: cannot load such file -- mysql

When I am trying to migrate files using command prompt:
sequel -m db/migrations/ mysql://root:root#localhost/todo
I get the following error:
Error: Sequel::AdapterNotFound: LoadError: cannot load such file --
mysql
C:/Ruby24-x64/lib/ruby/2.4.0/rubygems/core_ext/kernel_require.rb:55:in
`require'
Below is my migration file in db/migrations:
Sequel.migration do
change do
create_table :users do
primary_key :id
String :name, :unique => true, :length => 32, :null => false
String :password, :length => 32, :null => false
DateTime :created_at
end
end
end
My gemfile:
> GEM remote: https://rubygems.org/ specs:
> rack (2.0.3)
> rack-protection (2.0.0)
> rack
> sinatra (2.0.0)
> rack (~> 1.4)
> rack-protection (~> 1.4)
> tilt (~> 1.3, >= 1.3.4)
> tilt (2.0.7)
>
> PLATFORMS x64-mingw32
>
> DEPENDENCIES bundler (= 1.15.1) sinatra (= 2.0.0)
>
> BUNDLED WITH
> 1.15.1
You have to use the mysql2 adapter for your connection string. That also means you have to install the mysql2 gem on your machine. Make sure you have the MySQL development package on your machine and build essentials since this gem is a native extension and has dependencies outside Ruby.
Then connect via:
sequel -m db/migrations/ mysql2://root:root#localhost/todo

connect mysql with ruby without rails gives error in ruby version 2

I have included given code in my db.rb file
require "mysql2" # if needed
#db_host = "localhost"
#db_user = "root"
#db_pass = "root"
#db_name = "farji"
client = Mysql::Client.new(:host => #db_host, :username => #db_user, :password => #db_pass, :database => #db_name)
#cdr_result = client.query("SELECT * from employee')
and in terminal i have install
sudo apt-get install libmysqlclient15-dev
gem install mysql2
and run ruby db.rb it gives me error db.rb:8:in `': uninitialized constant Mysql (NameError)
my ruby version is ruby-2.1.5
Please guide me how to solve this.

Getting ruby activerecord to work with mysql adapter

I'm trying to work with activerecord and mysql without using rails, but I can't seem to connect my ruby code to mysql. My guess is i'm doing something wrong with my require statement or with how my gems are installed. Below is:
A. my script
B. my local gem list showing that the gems are installed
C. my path variables
D. my gem environment and
E. the error message i'm getting
Please help, this has consumed my entire day!
(I have activerecord-mysql-adapter showing in jewelry box under my ruby-1.9.3-P327#rails3tutorial2ndEd option, but not in my terminal when I run gem list --local. Could that have anything to do with it?)
(I also tried the solution sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib from this question and it didn't work for me.
A. Script:
(tried with and without shebang - neither worked)
1 require 'rubygems'
2 require 'active_record'
3
4 ActiveRecord::Base.establish_connection(
5 :adapter => 'mysql',
6 :host => 'xxxx',
7 :username=> 'xxxx',
8 :password=> 'xxxx',
9 :database=> 'players')
10
11 class Player < ActiveRecord::Base
12 end
13
14 Player.find(:all)
B. Gems in terminal when I run gem list:
$ gem list mysql
*** LOCAL GEMS ***
mysql (2.9.1)
mysql2 (0.3.11)
$ gem list activerecord
*** LOCAL GEMS ***
activerecord (3.2.12, 3.2.8)
C. Path's
$ $PATH
-bash: /Users/emmanueleleyae2/.rvm/gems/ruby-1.9.3-p327/bin:/Users/emmanueleleyae2/.rvm/gems/ruby-1.9.3-p327#global/bin:/Users/emmanueleleyae2/.rvm/rubies/ruby-1.9.3-p327/bin:/Users/emmanueleleyae2/.rvm/bin:/usr/local/mysql/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin: No such file or directory
$ $GEM_PATH
-bash: /Users/emmanueleleyae2/.rvm/gems/ruby-1.9.3-p327:/Users/emmanueleleyae2/.rvm/gems/ruby-1.9.3-p327#global: No such file or directory
$ $GEM_HOME
-bash: /Users/emmanueleleyae2/.rvm/gems/ruby-1.9.3-p327: is a directory
emmanuel-eleyaes-computer:chapter01 emmanueleleyae2$
D. Gem environment
$ gem env
RubyGems Environment:
- RUBYGEMS VERSION: 1.8.25
- RUBY VERSION: 1.9.3 (2012-11-10 patchlevel 327) [x86_64-darwin11.4.0]
- INSTALLATION DIRECTORY: /Users/emmanueleleyae2/.rvm/gems/ruby-1.9.3-p327
- RUBY EXECUTABLE: /Users/emmanueleleyae2/.rvm/rubies/ruby-1.9.3-p327/bin/ruby
- EXECUTABLE DIRECTORY: /Users/emmanueleleyae2/.rvm/gems/ruby-1.9.3-p327/bin
- RUBYGEMS PLATFORMS:
- ruby
- x86_64-darwin-11
- GEM PATHS:
- /Users/emmanueleleyae2/.rvm/gems/ruby-1.9.3-p327
- /Users/emmanueleleyae2/.rvm/gems/ruby-1.9.3-p327#global
- GEM CONFIGURATION:
- :update_sources => true
- :verbose => true
- :benchmark => false
- :backtrace => false
- :bulk_threshold => 1000
- REMOTE SOURCES:
- http://rubygems.org/
E. error message:
/Users/emmanueleleyae2/.rvm/rubies/ruby-1.9.3-p327/lib/ruby/site_ruby/1.9.1/rubygems/dependency.rb:247:in `to_specs': Please install the mysql adapter: `gem install activerecord-mysql-adapter` (Could not find mysql (~> 2.8.1) amongst [actionmailer-3.2.8, actionpack-3.2.8, activemodel-3.2.12, activemodel-3.2.8, activerecord-3.2.12, activerecord-3.2.8, activeresource-3.2.8, activesupport-3.2.12, activesupport-3.2.8, addressable-2.3.2, arel-3.0.2, blankslate-2.1.2.4, bluecloth-2.2.0, builder-3.0.4, bundler-1.2.1, capybara-1.1.2, cgi_multipart_eof_fix-2.5.0, childprocess-0.3.6, coffee-rails-3.2.2, coffee-script-2.2.0, coffee-script-source-1.4.0, daemons-1.1.9, daemons-1.0.10, diff-lcs-1.1.3, erubis-2.7.0, excon-0.16.10, execjs-1.4.0, fastthread-1.0.7, ffi-1.2.0, gem_plugin-0.2.3, gli-2.5.4, heroku-2.33.2, heroku-api-0.3.7, hike-1.2.1, i18n-0.6.1, journey-1.0.4, jquery-rails-2.1.4, jquery-rails-2.1.3, json-1.7.5, launchy-2.1.2, libwebsocket-0.1.7.1, mail-2.4.4, mime-types-1.19, mongrel-1.2.0.pre2, multi_json-1.4.0, multi_json-1.3.7, mysql2-0.3.11, netrc-0.7.7, nokogiri-1.5.5, parslet-1.5.0, pg-0.12.2, polyglot-0.3.3, rack-1.4.1, rack-cache-1.2, rack-protection-1.4.0, rack-ssl-1.3.2, rack-test-0.6.2, rails-3.2.8, railties-3.2.8, rake-10.0.2, rake-0.9.2.2, rdoc-3.12, rest-client-1.6.7, rspec-2.9.0, rspec-core-2.9.0, rspec-expectations-2.9.1, rspec-mocks-2.9.0, rspec-rails-2.9.0, rubygems-bundler-1.1.0, rubyzip-0.9.9, rvm-1.11.3.5, sass-3.2.3, sass-rails-3.2.5, selenium-webdriver-2.27.1, showoff-0.7.0, sinatra-1.3.5, sprockets-2.1.3, sqlite3-1.3.6, sqlite3-1.3.5, thor-0.16.0, tilt-1.3.3, treetop-1.4.12, tzinfo-0.3.35, uglifier-1.3.0, websocket-1.0.4, xpath-0.1.4]) (LoadError)
from /Users/emmanueleleyae2/.rvm/rubies/ruby-1.9.3-p327/lib/ruby/site_ruby/1.9.1/rubygems/dependency.rb:256:in `to_spec'
from /Users/emmanueleleyae2/.rvm/rubies/ruby-1.9.3-p327/lib/ruby/site_ruby/1.9.1/rubygems.rb:1231:in `gem'
from /Users/emmanueleleyae2/.rvm/gems/ruby-1.9.3-p327/gems/activerecord-3.2.12/lib/active_record/connection_adapters/mysql_adapter.rb:5:in `<top (required)>'
from /Users/emmanueleleyae2/.rvm/rubies/ruby-1.9.3-p327/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:60:in `require'
from /Users/emmanueleleyae2/.rvm/rubies/ruby-1.9.3-p327/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:60:in `rescue in require'
from /Users/emmanueleleyae2/.rvm/rubies/ruby-1.9.3-p327/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:35:in `require'
from /Users/emmanueleleyae2/.rvm/gems/ruby-1.9.3-p327/gems/activesupport-3.2.12/lib/active_support/dependencies.rb:251:in `block in require'
from /Users/emmanueleleyae2/.rvm/gems/ruby-1.9.3-p327/gems/activesupport-3.2.12/lib/active_support/dependencies.rb:236:in `load_dependency'
from /Users/emmanueleleyae2/.rvm/gems/ruby-1.9.3-p327/gems/activesupport-3.2.12/lib/active_support/dependencies.rb:251:in `require'
from /Users/emmanueleleyae2/.rvm/gems/ruby-1.9.3-p327/gems/activerecord-3.2.12/lib/active_record/connection_adapters/abstract/connection_specification.rb:50:in `resolve_hash_connection'
from /Users/emmanueleleyae2/.rvm/gems/ruby-1.9.3-p327/gems/activerecord-3.2.12/lib/active_record/connection_adapters/abstract/connection_specification.rb:29:in `spec'
from /Users/emmanueleleyae2/.rvm/gems/ruby-1.9.3-p327/gems/activerecord-3.2.12/lib/active_record/connection_adapters/abstract/connection_specification.rb:130:in `establish_connection'
from test.rb:4:in `<main>'
Have you tried to change
:adapter => 'mysql'
to
:adapter => 'mysql2'
change adapter mysql2
development:
adapter: mysql2
database: library_development
username: root
password:
host: localhost
test:
adapter: mysql2
database: library_test
username: root
password:
host: localhost
production:
adapter: mysql2
database: library_production
username: root
password:
host: localhost

Using active record and mysql on ruby script

I've been trying to use mysql and active record on a ruby script but I'm getting the following message: Outdated mysql gem. Upgrade to 2.8.1 or later. In your Gemfile: gem 'mysql', '2.8.1'. Or use gem 'mysql2' (RuntimeError). Before I was getting a message about gem 'mysql2' missing but then i checked the source code on the connection adapters in active record and saw that it require mysql gem which i didnt have installed.
this is my script:
require 'rubygems'
require 'active_record'
require 'mechanize'
require 'nokogiri'
require 'active_record'
require 'mysql2'
gem 'mysql2'
ActiveRecord::Base.establish_connection ({
:adapter => "mysql",
:host => "localhost",
:username => "root",
:password => "",
:database => "rainalytics"})
ActiveRecord::Schema.define(:version => 20110320035328) do
create_table "score_logs", :force => true do |t|
t.integer "blog_posts"
t.integer "featured"
end
create_table "users", :force => true do |t|
t.datetime "created_at"
t.datetime "updated_at"
end
end
class User < ActiveRecord::Base
has_many :score_logs
end
class ScoreLog < ActiveRecord::Base
belongs_to :user
end
Im not using the 'require 'mysql2' or 'gem 'mysql2' parts, and it seems to be working fine, I also have additional {} inside the ActiveRecord::Base block
hope this can help someone in future :)
This is what I use
ruby 1.9.2p318 (2012-02-14 revision 34678) [x86_64-darwin11.2.0]
Rails 3.1.0
require "rubygems"
require "active_record"
ActiveRecord::Base.establish_connection ({
:adapter => "mysql2",
:host => "localhost",
:username => "root",
:password => "root",
:database => "cybercellar"})
class Zone < ActiveRecord::Base
end
zone = Zone.all
print zone
then I navigate to my app folder and run the file
ruby script/test.rb