使用Net-SFTP gem,Ruby 2和Rails 4
我编写的代码在纯ruby中工作,但是将我的代码复制到rails,现在我得到:
Encoding::UndefinedConversionError: "\xA8" from ASCII-8BIT to UTF-8
Run Code Online (Sandbox Code Playgroud)
我可以在代码中更改哪些内容才能使其正常工作?
def self.get_recent_file(ftp_file, local_file)
Net::SFTP.start(Config::A_FTP[:domain], Config::A_FTP[:username], :password => Config::A_FTP[:password]) do |sftp|
sftp.download!(ftp_file, local_file)
end
end
Run Code Online (Sandbox Code Playgroud)
日志
Encoding::UndefinedConversionError: "\xA8" from ASCII-8BIT to UTF-8
from /usr/local/opt/rbenv/versions/2.1.0-rc1/lib/ruby/gems/2.1.0/gems/net-sftp-2.1.2/lib/net/sftp/operations/download.rb:339:in `write'
from /usr/local/opt/rbenv/versions/2.1.0-rc1/lib/ruby/gems/2.1.0/gems/net-sftp-2.1.2/lib/net/sftp/operations/download.rb:339:in `write'
from /usr/local/opt/rbenv/versions/2.1.0-rc1/lib/ruby/gems/2.1.0/gems/net-sftp-2.1.2/lib/net/sftp/operations/download.rb:339:in `on_read'
from /usr/local/opt/rbenv/versions/2.1.0-rc1/lib/ruby/gems/2.1.0/gems/net-sftp-2.1.2/lib/net/sftp/request.rb:87:in `call'
from /usr/local/opt/rbenv/versions/2.1.0-rc1/lib/ruby/gems/2.1.0/gems/net-sftp-2.1.2/lib/net/sftp/request.rb:87:in `respond_to'
from /usr/local/opt/rbenv/versions/2.1.0-rc1/lib/ruby/gems/2.1.0/gems/net-sftp-2.1.2/lib/net/sftp/session.rb:948:in `dispatch_request'
from /usr/local/opt/rbenv/versions/2.1.0-rc1/lib/ruby/gems/2.1.0/gems/net-sftp-2.1.2/lib/net/sftp/session.rb:911:in `when_channel_polled'
from /usr/local/opt/rbenv/versions/2.1.0-rc1/lib/ruby/gems/2.1.0/gems/net-ssh-2.8.0/lib/net/ssh/connection/channel.rb:311:in `call'
from /usr/local/opt/rbenv/versions/2.1.0-rc1/lib/ruby/gems/2.1.0/gems/net-ssh-2.8.0/lib/net/ssh/connection/channel.rb:311:in `process'
from /usr/local/opt/rbenv/versions/2.1.0-rc1/lib/ruby/gems/2.1.0/gems/net-ssh-2.8.0/lib/net/ssh/connection/session.rb:222:in `block in preprocess'
from /usr/local/opt/rbenv/versions/2.1.0-rc1/lib/ruby/gems/2.1.0/gems/net-ssh-2.8.0/lib/net/ssh/connection/session.rb:222:in `each'
from /usr/local/opt/rbenv/versions/2.1.0-rc1/lib/ruby/gems/2.1.0/gems/net-ssh-2.8.0/lib/net/ssh/connection/session.rb:222:in `preprocess'
from /usr/local/opt/rbenv/versions/2.1.0-rc1/lib/ruby/gems/2.1.0/gems/net-ssh-2.8.0/lib/net/ssh/connection/session.rb:205:in `process'
from /usr/local/opt/rbenv/versions/2.1.0-rc1/lib/ruby/gems/2.1.0/gems/net-ssh-2.8.0/lib/net/ssh/connection/session.rb:169:in `block in loop'
from …Run Code Online (Sandbox Code Playgroud) module A
module B
class C < A::Base
def some_method
end
end
end
end
Run Code Online (Sandbox Code Playgroud)
当我使用引用类名时,如何获得类名“ C” .name,我得到了A :: B :: C
获取元素的渲染样式 (也应该能够处理内联CSS)
我一直在学习Nokogiri,并了解如何根据ID或类选择节点.但是,我想选择一个节点/元素并返回分配给它的特定CSS样式,包括继承的样式.
CSS样式表:
<head>
<style type="text/css">
.myfont {font-family: Times New Roman: font-size: 80% }
.bold {font-weight: bold}
.50_font_size { font-size:50% }
</style>
</head>
Run Code Online (Sandbox Code Playgroud)
HTML:
<Body>
<div id="article1" class="myfont">
<div id="title1" class="bold">
My Title Text
<div id="author1" class="50_font_size">
By First Name Last Name
</div>
</div>
General article text. General article text. General article text.
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
在上面的例子中,我想用...
require "nokogiri"
document=Nokogiri.HTML(HTML_String)
#Hoping for something like the following:
author_css = node.css_style("author1")
puts author_css
#=> {font-family=>"Times New Roman",
#=> font-weight=> "bold", …Run Code Online (Sandbox Code Playgroud) 我想要一个干净的代码,我觉得这很笨重.
有一个更好的方法吗?
User.try(:profile).try(:settings).try(:card).try(:options)
Run Code Online (Sandbox Code Playgroud)
如果我删除了try方法,我会得到一个nil方法错误.
是否还有另一段代码可以执行以下操作:
User.try(:profile,:settings, :card, :options)
Run Code Online (Sandbox Code Playgroud) 使用 Git 丢弃未提交更改的最佳方法是什么。
我读了这个,但想完全了解每一步在做什么。
git reset
Run Code Online (Sandbox Code Playgroud)
这是否意味着删除任何添加的文件?
git checkout .
Run Code Online (Sandbox Code Playgroud)
什么被认为是根?如果我在分支 A 并且我想忽略分支 A 上所有未提交的更改,分支 A 是否被视为根?
git clean -fdx
Run Code Online (Sandbox Code Playgroud)
这是在删除我的文件吗?包括被忽略的文件?如果忽略的文件没有改变怎么办?
这两者都有效:
Rails.application.credentials.development
Rails.application.credentials.send(:development)
Run Code Online (Sandbox Code Playgroud)
然而,第一个.test有效,但 (:test) 无效。
Rails.application.credentials.test
Rails.application.credentials.send(:test)
Run Code Online (Sandbox Code Playgroud)
为什么 :test 很特别?什么会使这行不通?我明白了
[5] pry(#<Cred>)>Rails.application.credentials.send(:test)
ArgumentError: wrong number of arguments (given 0, expected 2..3)
from (pry):5:in `test'
Run Code Online (Sandbox Code Playgroud) class Car < ApplicationRecord
belongs_to :user
has_one :listing, as: :listable
has_one :firm, as: :firmable
has_one :seller, as: :sellable
end
class Truck < ApplicationRecord
belongs_to :user
has_one :listing, as: :listable
has_one :firm, as: :firmable
has_one :seller, as: :sellable
end
class Listing < ApplicationRecord
belongs_to :listable, polymorphic: true
has_many :favorites, dependent: :destroy
has_many :users_who_favorited, through: :favorites, source: :user
end
Run Code Online (Sandbox Code Playgroud)
假设汽车和卡车都有一个 user_id 字段......
Listing.includes(:listable)返回一个早期加载的列表 AR 关系。
但是,我需要按 user_id 进行过滤,所以我尝试了......
Listing.includes(:listable).where(user_id: 100)
但我收到错误..
ActiveRecord::StatementInvalid (PG::UndefinedColumn: 错误: 列listings.user_id 不存在) 第1行: SELECT "listings".* FROM …
据我了解,换.save!行将 ActiveRecord::Base.transaction确保所有模型(用户、配置文件和设置)保存在一起或根本不保存。
但是,我还被告知包括 .save!与所有模型。保存!方法也能做到这一点。所以本质上,版本 1 和 2 是相同的。我感觉我错了,那有什么区别呢?
谢谢
def save
if valid?
ActiveRecord::Base.transaction do
User.save!
Profile.save!
Setting.save!
end
else
false
end
end
Run Code Online (Sandbox Code Playgroud)
def save
if valid?
User.save!
Profile.save!
Setting.save!
else
false
end
end
Run Code Online (Sandbox Code Playgroud)
参考: https: //api.rubyonrails.org/classes/ActiveRecord/Transactions/ClassMethods.html
谷歌返回当前的纬度和经度,但计算左下纬度和经度以及右上纬度和经度。我一直无法弄清楚它是如何计算的。
有谁知道它是否是静态距离?百分比差异?它是如何计算的?
伊利诺伊州芝加哥
current lat 41.8781136
current lon -87.6297982
lower left lat 40.3781136
lower left lon -89.8743648
upper right lat 43.3781136
upper right lon -85.3852316
Run Code Online (Sandbox Code Playgroud)
纽约
current lat 40.7127753
current lon -74.0059728
lower left lat 39.2127753
lower left lon -76.26396172
upper right lat 42.2127753
upper right lon -71.74798388
Run Code Online (Sandbox Code Playgroud)
知道它从中心到左侧和右侧是 103.5 英里,并且知道它从中心到顶部和底部边界是 103.5 英里。
使用当前的经纬度点,如何计算左下角和右上角的点?
我假设 PostGIS 有这个功能?
我有一个带有地址的单元格的excel文件.
3个不同的数据示例:
123 Main Street/n Apartment2 /n New York, NY 10001
123 Main Street/n New York, NY 10001
123 Main Street
Run Code Online (Sandbox Code Playgroud)
我想把它分成三个独立的领域.但是,如上面的数据所示,有些将出现0次/ n,有些将出现2次.有些人会有3次出现.
我可以处理一次,其中:= LEFT(E6,SEARCH("/ n",E6,1)-2)= RIGHT(导出!E6,LEN(导出!E6) - 搜索("/ n",导出! E6,1)-1)
但是,当有可变数量的/ n时,我的公式开始分解
有什么建议?
在Ruby中,调用有优势 present?
my_value.present?
Run Code Online (Sandbox Code Playgroud)
与 !!
!!my_value
Run Code Online (Sandbox Code Playgroud) 是否有比下面更简洁的方法来检查数组是否仅包含String类对象?
a = ['one','twon','three'] # => ["one", "twon", "three"]
b = ['one','twon', 1 ] # => ["one", "twon", 1]
c = ['one','twon', {one: 1} ] # => ["one", "twon", {:one=>1}]
def contains_only_string_class(object)
uniq_a= object.map{ |i| i.class }.uniq # => [String], [String, Integer], [String, Hash]
uniq_a.include?(String) & (uniq_a.length == 1) # => true, false, false
end # => :contains_only_string_class
contains_only_string_class(a) # => true
contains_only_string_class(b) # => false
contains_only_string_class(c) # => false
Run Code Online (Sandbox Code Playgroud) ruby ×9
activerecord ×1
css ×1
excel ×1
excel-2007 ×1
excel-vba ×1
gis ×1
git ×1
git-reset ×1
google-maps ×1
html ×1
net-sftp ×1
nokogiri ×1
polymorphism ×1
postgis ×1
postgresql ×1
sql ×1
vba ×1