Ruby Sequel Gem unable to look up tables with different owner - ruby

I'm connecting to my company's database with the Sequel Gem using the odbc adaptor.
DB = Sequel.odbc('myserver', :user => "USER1", :password => "1234")
I connected fine but I was not able to get the dataset off of tables that belongs to other users.
When I connect to the database with Interactive SQL, I see the following tables.
USER1.TABLE1
USER1.TABLE2
USER1.TABLE3
USER2.TABLE4
USER2.TABLE5
When in interactive SQL. I have complete right to do anything with all the tables since user1 is a superuser. However, when I try to pull table4 or table5 with Sequel gem.
dataset = DB[:TABLE4].all.count
I get the following error.
Traceback (most recent call last):
16: from C:/Ruby26-x64/bin/irb:23:in 'load'
15: from C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/irb-1.2.0/exe/irb:11:in '<top (required)>'
14: from (irb):17
13: from C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/sequel-5.29.0/lib/sequel/dataset/actions.rb:51:in 'all'
12: from C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/sequel-5.29.0/lib/sequel/dataset/actions.rb:1006:in `_all'
11: from C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/sequel-5.29.0/lib/sequel/dataset/actions.rb:51:in 'block in all'
10: from C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/sequel-5.29.0/lib/sequel/dataset/actions.rb:152:in 'each'
9: from C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/sequel-5.29.0/lib/sequel/adapters/odbc.rb:90:in 'fetch_rows'
8: from C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/sequel-5.29.0/lib/sequel/dataset/actions.rb:1089:in 'execute'
7: from C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/sequel-5.29.0/lib/sequel/adapters/odbc.rb:40:in 'execute'
6: from C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/sequel-5.29.0/lib/sequel/database/connecting.rb:270:in 'synchronize'
5: from C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/sequel-5.29.0/lib/sequel/connection_pool/threaded.rb:92:in 'hold'
4: from C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/sequel-5.29.0/lib/sequel/adapters/odbc.rb:42:in 'block in execute'
3: from C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/sequel-5.29.0/lib/sequel/database/logging.rb:38:in 'log_connection_yield'
2: from C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/sequel-5.29.0/lib/sequel/adapters/odbc.rb:42:in 'block (2 levels) in execute'
1: from C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/sequel-5.29.0/lib/sequel/adapters/odbc.rb:42:in 'run'
Sequel::DatabaseError (ODBC::Error: S0002 (-141) [Sybase][ODBC Driver][SQL Anywhere]Table 'TABLE4' not found)
However when using the same code to pull TABLE1, 2 or 3 is fine tho.
dataset = DB[:TABLE1].all.count
=>999
Maybe because I'm not looking up table 4 or 5 correctly? Or I have to somehow specify the owner of those table? In Interactive SQL I have to do USER2.TABLE4 to identify the table.
Many thanks!

You need to use a qualified identifier in Sequel, just as you need to in SQL:
dataset = DB[Sequel[:USER2][:TABLE4]].all.count
For more information, see:
http://sequel.jeremyevans.net/rdoc/files/README_rdoc.html#label-Qualifying+identifiers+-28column-2Ftable+names-29
http://sequel.jeremyevans.net/rdoc/files/doc/sql_rdoc.html#label-Identifiers

Related

Faraday::SSLError (SSL_connect returned=1 errno=0 state=error: certificate verify failed (unable to get local issuer certificate))

I'm using Faraday gem(https://github.com/lostisland/faraday) to communicate with external JSON API. I'm using the SSL option because API is requiring this:
ssl_crt = File.read(Jets.root.join('certs', 'test.crt'))
ssl_key = File.read(Jets.root.join('certs', 'test.key'))
client_cert = OpenSSL::X509::Certificate.new(ssl_crt)
client_key = OpenSSL::PKey.read(ssl_key)
connection = Faraday.new(
'https://sandbox-api.com/',
ssl: {
client_cert: client_cert,
client_key: client_key,
verify: true
}
) do |conn|
conn.response :json, content_type: /\bjson$/
conn.use Faraday::Response::RaiseError
conn.adapter Faraday.default_adapter
end
connection.get('/token')
Unfortunately, this returns me following error:
Traceback (most recent call last):
16: from /Users/mateuszurbanski/.gem/ruby/2.5.3/gems/faraday-1.0.1/lib/faraday/connection.rb:198:in `get'
15: from /Users/mateuszurbanski/.gem/ruby/2.5.3/gems/faraday-1.0.1/lib/faraday/connection.rb:492:in `run_request'
14: from /Users/mateuszurbanski/.gem/ruby/2.5.3/gems/faraday-1.0.1/lib/faraday/rack_builder.rb:153:in `build_response'
13: from /Users/mateuszurbanski/.gem/ruby/2.5.3/gems/faraday_middleware-1.0.0/lib/faraday_middleware/response_middleware.rb:36:in `call'
12: from /Users/mateuszurbanski/.gem/ruby/2.5.3/gems/faraday-1.0.1/lib/faraday/response.rb:11:in `call'
11: from /Users/mateuszurbanski/.gem/ruby/2.5.3/gems/faraday-1.0.1/lib/faraday/adapter/net_http.rb:68:in `call'
10: from /Users/mateuszurbanski/.gem/ruby/2.5.3/gems/faraday-1.0.1/lib/faraday/adapter.rb:60:in `connection'
9: from /Users/mateuszurbanski/.gem/ruby/2.5.3/gems/faraday-1.0.1/lib/faraday/adapter/net_http.rb:70:in `block in call'
8: from /Users/mateuszurbanski/.gem/ruby/2.5.3/gems/faraday-1.0.1/lib/faraday/adapter/net_http.rb:128:in `perform_request'
7: from /Users/mateuszurbanski/.gem/ruby/2.5.3/gems/faraday-1.0.1/lib/faraday/adapter/net_http.rb:135:in `request_with_wrapped_block'
6: from /Users/mateuszurbanski/.gem/ruby/2.5.3/gems/faraday-1.0.1/lib/faraday/adapter/net_http.rb:144:in `request_via_get_method'
5: from /Users/mateuszurbanski/.rubies/ruby-2.5.3/lib/ruby/2.5.0/net/http.rb:909:in `start'
4: from /Users/mateuszurbanski/.rubies/ruby-2.5.3/lib/ruby/2.5.0/net/http.rb:920:in `do_start'
3: from /Users/mateuszurbanski/.rubies/ruby-2.5.3/lib/ruby/2.5.0/net/http.rb:981:in `connect'
2: from /Users/mateuszurbanski/.rubies/ruby-2.5.3/lib/ruby/2.5.0/net/protocol.rb:44:in `ssl_socket_connect'
1: from /Users/mateuszurbanski/.rubies/ruby-2.5.3/lib/ruby/2.5.0/net/protocol.rb:44:in `connect_nonblock'
Faraday::SSLError (SSL_connect returned=1 errno=0 state=error: certificate verify failed (unable to get local issuer certificate))
Any ideas what I'm doing wrong?
EDIT:
I forgot to add that the same certs are working fine in the Postman.
First, we need to confirm if you are using the public ca issued certificates, a privately issued certificate or a self-signed because the error states its not able to locate the certificate which has signed the leaf certificate.
I suggest to first check whether "test.crt" have you concatenated the server, intermediate and root certificates in one. If the intermediate file or the root file is not concatenated kindly add the same to test.crt by editing the test.crt using notepad++ or any editing tool (please don't use windows word file). Please open eh intermediate file as well using notepad++ and copy the content . Once copied paste it under the -----END CERTIFICATE----- of test.crt file and follow the same step for root certificate as well. Please let us know the output.

Mongo Ruby Driver Cursor not found error

I find documents from mongodb using ruby driver, collect them to array and iterate on them to update the same document as in the code below:
crawlarray = ##mongoclient[:crawlarray].find({searchresults:[]},:timeout => false).limit(500)
crawlarray.each do |elm|
finalsearchstring = elm['searchstring']
if elm["searchresults"].blank?
ap "SEARCHING: #{finalsearchstring}"
results = searchG(finalsearchstring)
elm["searchresults"] = results
##mongoclient[:crawlarray].update_one({"_id" => elm['_id']}, elm)
else
ap "ALREADY SEARCHED: #{finalsearchstring}"
end
end
There are 90K records but as you see I just get 500 to not to get the error.Everytime, after about 150 iterations I get this error;
D, [2016-08-02T22:32:08.853065 #10098] DEBUG -- : MONGODB | 127.0.0.1:27017 | posluga-dev.getMore | FAILED | Cursor not found, cursor id: 463388278686 (43) | 0.008009s
/Users/apple/.rvm/gems/ruby-2.2.1/gems/mongo-2.2.7/lib/mongo/operation/result.rb:256:in `validate!': Cursor not found, cursor id: 463388278686 (43) (Mongo::Error::OperationFailure)
from /Users/apple/.rvm/gems/ruby-2.2.1/gems/mongo-2.2.7/lib/mongo/operation/executable.rb:36:in `block in execute'
from /Users/apple/.rvm/gems/ruby-2.2.1/gems/mongo-2.2.7/lib/mongo/server/connection_pool.rb:107:in `with_connection'
from /Users/apple/.rvm/gems/ruby-2.2.1/gems/mongo-2.2.7/lib/mongo/server/context.rb:63:in `with_connection'
from /Users/apple/.rvm/gems/ruby-2.2.1/gems/mongo-2.2.7/lib/mongo/operation/executable.rb:34:in `execute'
from /Users/apple/.rvm/gems/ruby-2.2.1/gems/mongo-2.2.7/lib/mongo/cursor.rb:163:in `block in get_more'
from /Users/apple/.rvm/gems/ruby-2.2.1/gems/mongo-2.2.7/lib/mongo/retryable.rb:51:in `call'
from /Users/apple/.rvm/gems/ruby-2.2.1/gems/mongo-2.2.7/lib/mongo/retryable.rb:51:in `read_with_retry'
from /Users/apple/.rvm/gems/ruby-2.2.1/gems/mongo-2.2.7/lib/mongo/cursor.rb:162:in `get_more'
from /Users/apple/.rvm/gems/ruby-2.2.1/gems/mongo-2.2.7/lib/mongo/cursor.rb:88:in `each'
from /Users/apple/.rvm/gems/ruby-2.2.1/gems/mongo-2.2.7/lib/mongo/collection/view/iterable.rb:44:in `each'
Can anybody help me to sort it out?
Use 'no_cursor_timeout' option along with the find query while using Mongo Ruby Driver.
This will disable all cursor timeouts. By default MongoDB tries to kill all cursors which have been inactive for more than 10 mins.
For more information, check this post.

Unable to Locate element in salesforce using watir

Problem 1:
Input:
browser.span(:id => 'ProdSelectionPage_Fav:mainform:pbmain:pSecId:j_id90:txtQuoteDesc').when_present.exist?
Error:
C:/Ruby200/lib/ruby/gems/2.0.0/gems/watir-classic-4.2.0/lib/watir-classic/wait.rb:29:in `until': timed out after 60 seconds (Watir::Wait::TimeoutError)
from C:/Ruby200/lib/ruby/gems/2.0.0/gems/watir-classic-4.2.0/lib/watir-classic/element_extensions.rb:18:in `method_missing'
from C:/WebAutomation/Tests/sandbox/attach.rb:52:in `<main>'
Problem 2:
Input:
browser.frame.text_field(:id, /ProdSelectionPage_Fav:mainform:pbmain:pSecId:j_id90:txtQuoteDesc/).when_present.set'gautam raj'
Error:
C:/Ruby200/lib/ruby/gems/2.0.0/gems/watir-classic-4.2.0/lib/watir-classic/wait.rb:29:in `until': timed out after 60 seconds (Watir::Wait::TimeoutError)
from C:/Ruby200/lib/ruby/gems/2.0.0/gems/watir-classic-4.2.0/lib/watir-classic/element_extensions.rb:18:in `method_missing'
from C:/WebAutomation/Tests/sandbox/attach.rb:56:in `<main>'
Without 'when_present' and used 'sleep 30' before
Input:
browser.frame.text_field(:id, /ProdSelectionPage_Fav:mainform:pbmain:pSecId:j_id90:txtQuoteDesc/).set'gautam raj'
// tried 'name' instead of 'id' for input
Error:
C:/Ruby200/lib/ruby/gems/2.0.0/gems/watir-classic-4.2.0/lib/watir-classic/element.rb:338:in `assert_exists': Unable to locate element, using {:tag_name=>["frame", "iframe"]} (Watir::Exception::UnknownFrameException)
from C:/Ruby200/lib/ruby/gems/2.0.0/gems/watir-classic-4.2.0/lib/watir-classic/frame.rb:21:in `document'
from C:/Ruby200/lib/ruby/gems/2.0.0/gems/watir-classic-4.2.0/lib/watir-classic/frame.rb:52:in `__ole_inner_elements'
from C:/Ruby200/lib/ruby/gems/2.0.0/gems/watir-classic-4.2.0/lib/watir-classic/locator.rb:204:in `each_element'
from C:/Ruby200/lib/ruby/gems/2.0.0/gems/watir-classic-4.2.0/lib/watir-classic/locator.rb:229:in `each'
from C:/Ruby200/lib/ruby/gems/2.0.0/gems/watir-classic-4.2.0/lib/watir-classic/locator.rb:217:in `locate'
from C:/Ruby200/lib/ruby/gems/2.0.0/gems/watir-classic-4.2.0/lib/watir-classic/input_elements.rb:20:in `locate'
from C:/Ruby200/lib/ruby/gems/2.0.0/gems/watir-classic-4.2.0/lib/watir-classic/element.rb:335:in `assert_exists'
from C:/Ruby200/lib/ruby/gems/2.0.0/gems/watir-classic-4.2.0/lib/watir-classic/element.rb:484:in `perform_action'
from C:/Ruby200/lib/ruby/gems/2.0.0/gems/watir-classic-4.2.0/lib/watir-classic/input_elements.rb:252:in `set'
from C:/WebAutomation/Tests/sandbox/attach.rb:56:in `<main>'
html code:
<input name="ProdSelectionPage_Fav:mainform:pbmain:pSecId:j_id90:txtQuoteDesc" id="ProdSelectionPage_Fav:mainform:pbmain:pSecId:j_id90:txtQuoteDesc" type="text" size="20" maxlength="35">
The problem here is the element you are trying to location never visible to watir.
So with when_present, it will fail with Watir::Wait::TimeoutError error. If you want to click/set the element not visible, it will fail with Watir::Exception::UnknownFrameException error.
The problem here was, when I move to next page, system is throwing error. So, I used below command when I want to move to next page
browser = Watir::Browser.attach(:url, //)
Now, it is working fine

Error while using mosql mongodb to postgres translator

I am using MOSQL to create a live database replica of a mongodb database in postgres. I install all the requirements.
My mosql query i ran in terminal:
mosql -c coll.yaml --sql postgres://postgres:postgres#localhost:5432/test --mongo mongodb://localhost:27017/
My mongodb collection:
{
"_id" : ObjectId("562dd2ef5bd6681ad0f63868"),
"name" : "manish",
"score" : 23,
"class" : "Engg"
}
...
My coll.yaml:
Flipkart:
temp:
:columns:
- name: TEXT
- score: INTEGER
- class: TEXT
:meta:
:table: temp
:extra_props: true
Error
/usr/lib/ruby/1.9.1/psych.rb:203:in parse': (coll.yaml): found character that cannot start any token while scanning for the next token at line 2 column 1 (Psych::SyntaxError)
from /usr/lib/ruby/1.9.1/psych.rb:203:inparse_stream'
from /usr/lib/ruby/1.9.1/psych.rb:151:in parse'
from /usr/lib/ruby/1.9.1/psych.rb:127:inload'
from /usr/lib/ruby/1.9.1/psych.rb:297:in block in load_file'
from /usr/lib/ruby/1.9.1/psych.rb:297:inopen'
from /usr/lib/ruby/1.9.1/psych.rb:297:in load_file'
from /var/lib/gems/1.9.1/gems/mosql-0.4.3/lib/mosql/cli.rb:140:inload_collections'
from /var/lib/gems/1.9.1/gems/mosql-0.4.3/lib/mosql/cli.rb:152:in run'
from /var/lib/gems/1.9.1/gems/mosql-0.4.3/lib/mosql/cli.rb:16:inrun'
from /var/lib/gems/1.9.1/gems/mosql-0.4.3/bin/mosql:5:in <top (required)>'
from /usr/local/bin/mosql:23:inload'
from /usr/local/bin/mosql:23:in `'
How to remove the error?

peatio: what is default password for database.yml?

I just tried to install peatio and I see that password is empty in peatio/config/database.yml
what should be written there?
here is screenshot: http://s14.postimg.org/4ijmxjwtt/untitled.png
here is my error from terminal when I tried to start server:
bundle exec rails server
/usr/local/lib/ruby/2.1.0/psych.rb:370:in `parse': (): did
not find expected key while parsing a block mapping at line 6 column 3
(Psych::SyntaxError)
edited, here is full error:
from /usr/local/lib/ruby/2.1.0/psych.rb:370:in parse_stream'
from /usr/local/lib/ruby/2.1.0/psych.rb:318:inparse'
from /usr/local/lib/ruby/2.1.0/psych.rb:245:in load'
from /usr/local/lib/ruby/gems/2.1.0/gems/figaro-0.7.0/lib/figaro.rb:21:i
from /usr/local/lib/ruby/gems/2.1.0/gems/figaro-0.7.0/lib/figaro.rb:17:i
from /usr/local/lib/ruby/gems/2.1.0/gems/figaro-0.7.0/lib/figaro/railtie
from /usr/local/lib/ruby/gems/2.1.0/gems/activesupport-4.0.2/lib/active_
from /usr/local/lib/ruby/gems/2.1.0/gems/activesupport-4.0.2/lib/active_
from /usr/local/lib/ruby/gems/2.1.0/gems/activesupport-4.0.2/lib/active_
from /usr/local/lib/ruby/gems/2.1.0/gems/activesupport-4.0.2/lib/active_
from /usr/local/lib/ruby/gems/2.1.0/gems/activesupport-4.0.2/lib/active_
from /usr/local/lib/ruby/gems/2.1.0/gems/railties-4.0.2/lib/rails/applic
from /peatio/config/application.rb:16:in'
from /peatio/config/application.rb:15:in <top (required)>'
from /usr/local/lib/ruby/gems/2.1.0/gems/railties-4.0.2/lib/rails/comman
from /usr/local/lib/ruby/gems/2.1.0/gems/railties-4.0.2/lib/rails/comman
from /usr/local/lib/ruby/gems/2.1.0/gems/railties-4.0.2/lib/rails/comman
from /usr/local/lib/ruby/gems/2.1.0/gems/railties-4.0.2/lib/rails/comman
from bin/rails:4:inrequire'
from bin/rails:4:in `'
Peatio default password for user admin#barong.io is Qwerty123 or Chah5YohWm

Resources