我是Ruby的新手,想知道为什么我在这种情况下使用简单的Sinatra应用程序中的'mail'gem获得错误:
post "/email/send" do
@recipient = params[:email]
Mail.deliver do
to @recipient # throws error as this is undefined
from 'server@domain.com'
subject 'testing sendmail'
body 'testing sendmail'
end
erb :email_sent
end
Run Code Online (Sandbox Code Playgroud)
然而,这工作正常:
post "/email/send" do
Mail.deliver do
to 'me@domain.com'
from 'server@domain.com'
subject 'testing sendmail'
body 'testing sendmail'
end
erb :email_sent
end
Run Code Online (Sandbox Code Playgroud)
我怀疑这与块范围和我对它的误解有关.
我需要帮助。我正在尝试将 CocoaPods 安装到我的 mac,当我进入该过程的“pod setup”部分时收到以下错误。有任何想法吗?
Nathans-MacBook-Air:~ nathannoel$ pod setup --verbose
/Library/Ruby/Gems/2.3.0/gems/cocoapods-1.5.3/lib/cocoapods/command.rb:118:in
`git_version': Failed to extract git version from `git --version`
("xcrun: error: invalid active developer path
(/Applications/Xcode.app/Contents/Developer), missing xcrun at:
/Applications/Xcode.app/Contents/Developer/usr/bin/xcrun\n") (RuntimeError)
from /Library/Ruby/Gems/2.3.0/gems/cocoapods-1.5.3/lib/cocoapods/command.rb:130:in
`verify_minimum_git_version!'
from /Library/Ruby/Gems/2.3.0/gems/cocoapods-1.5.3/lib/cocoapods/command.rb:49:in `run'
from /Library/Ruby/Gems/2.3.0/gems/cocoapods-1.5.3/bin/pod:55:in `<top (required)>'
from /usr/local/bin/pod:22:in `load'
from /usr/local/bin/pod:22:in `<main>'
Nathans-MacBook-Air:~ nathannoel$
Run Code Online (Sandbox Code Playgroud) 我收到此错误消息:
"It seems your ruby installation is missing psych (for YAML output).
To eliminate this warning, please install libyaml and reinstall your ruby."
Run Code Online (Sandbox Code Playgroud)
我试过输入这个命令: rvm pkg install libyaml
我收到此错误消息:
"Fetching yaml-0.1.4.tar.gz to /Users/luke/.rvm/archives
Extracting yaml-0.1.4.tar.gz to /Users/luke/.rvm/src
Error running 'tar xmzf /Users/luke/.rvm/archives/yaml-0.1.4.tar.gz -C
/Users/luke/.rvm/src ',
please read /Users/luke/.rvm/log/yaml/extract.log
Configuring yaml in /Users/luke/.rvm/src/yaml-0.1.4.
Error running ' ./configure --prefix="/Users/luke/.rvm/usr" ',
please read /Users/luke/.rvm/log/yaml/configure.log
Compiling yaml in /Users/luke/.rvm/src/yaml-0.1.4.
Error running 'make ', please read /Users/luke/.rvm/log/yaml/make.log
Database file /Users/luke/.rvm/config/packages does not exist."
Run Code Online (Sandbox Code Playgroud)
有谁知道我做错了什么?谢谢!
我是Ruby和Rails项目的绝对新手,所以如果这是一个愚蠢的问题,我很抱歉.
我已经安装了heroku工具带wget -qO- https://toolbelt.heroku.com/install-ubuntu.sh | sh.我也试过了gem install heroku.但是当我键入:
MY_USER@home-PC:~$ heroku version
<internal:gem_prelude>:1:in `require': cannot load such file -- rubygems.rb (LoadError)
from <internal:gem_prelude>:1:in `<compiled>'
Run Code Online (Sandbox Code Playgroud)
我已经检查了谷歌,人们建议宝石和当前的红宝石是不同的版本,所以我检查了它们,它们似乎是一样的:
MY_USER@home-PC:~$ which ruby
/home/MY_USER/.rvm/rubies/ruby-1.9.3-p327/bin/ruby
MY_USER@home-PC:~$ gem env | grep 'RUBY EXECUTABLE'
- RUBY EXECUTABLE: /home/MY_USER/.rvm/rubies/ruby-1.9.3-p327/bin/ruby
Run Code Online (Sandbox Code Playgroud)
我不知道该怎么做,所以请帮忙.
对不起这个可能很愚蠢的问题,提前谢谢.
编辑:忘了说我正在运行Ubuntu 12.10.
我在带有Python 2.7.13的Ubuntu 14.04上使用virtualenv,并且试图开始import pygst工作(我是一个完整的Python新手)。
我下载了:https :
//gstreamer.freedesktop.org/src/gst-python/gst-python-1.12.1.tar.xz
编译并安装有:
./configure --prefix=$VIRTUAL_ENV && make install
但是我仍然不能import pygst:
>>> import pygst
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named pygst
Run Code Online (Sandbox Code Playgroud)
也没有匹配pygst的pip包。我肯定错过了一些非常简单的东西,但我无法弄清楚。
这也无济于事,因为它仅影响系统Python的安装,而不影响virtualenv:
sudo apt-get install python-gst0.10 gstreamer0.10-plugins-good gstreamer0.10-plugins-ugly
Run Code Online (Sandbox Code Playgroud)
如何使用virtualenv安装pygst?
我正在处理许多预先存在的文件、类和模块,并试图为框架的不同组件提供更好的命名空间。我一直使用模块作为命名空间的一种方式,主要是因为这似乎是标准约定(并且能够“包含”框架的不同部分可能很有用)。
问题是在全局命名空间下有大量应该存在于模块下的类。例如,假设有一个简单定义为的类:
class FirstClass
def meth
puts "HELLO"
end
end
Run Code Online (Sandbox Code Playgroud)
但现在我想在一个模块中拥有这个类:
使用双冒号:
module Foo; end
class Foo::FirstClass
def meth
puts 'HELLO'
end
end
Run Code Online (Sandbox Code Playgroud)
使用模块块:
module Foo
class FirstClass
def meth
puts 'HELLO'
end
end
Run Code Online (Sandbox Code Playgroud)
使用双冒号更简洁,也更容易实现,因为我正在更改许多类定义。这两种方式都有效,我认为它们实际上是一回事,但显然它们不是。与模块块相比,双冒号方法似乎导致每个类中的命名空间不同。例如,在“Foo”下面有两个类:
使用模块块:
module Foo
class FirstClass
def meth
puts 'HELLO'
end
end
class SecondClass
def meth
FirstClass.new.meth
end
end
end
Foo::SecondClass.new.meth
Run Code Online (Sandbox Code Playgroud)
使用双冒号:
module Foo; end
class Foo::FirstClass
def meth
puts 'HELLO'
end
end
class Foo::SecondClass
def meth
FirstClass.new.meth
end
end
Foo::SecondClass.new.meth
Run Code Online (Sandbox Code Playgroud)
该代码在使用模块块时有效,但不适用于双冒号。使用双冒号,会引发 NameError,因为它解析FirstClass …
我正在尝试将我从excel导出的CSV文件加载到我的数据库中,无论我尝试什么,我似乎都无法正确格式化.
这是SQL:
LOAD DATA INFILE 'path/file.csv'
INTO TABLE tbl_name
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
(column1, column2, column3);
Run Code Online (Sandbox Code Playgroud)
这很好但是当一行(第3列)的末尾以引号结束时我遇到了麻烦.例如:
实际价值: These are "quotes"
CSV中的值: "These are ""quotes"""
会发生的是,我会在数据库中获得该值的额外报价以及任何其他行,直到它到达CSV中的另一个报价.关于如何解决这个问题的任何想法?
在Ruby中为什么我们需要数组Packing?如何directive帮助做这样的包装?
我在我的控制台中运行了一些代码,以查看Array包装中的指令是什么以及如何.但输出与每个指令完全相同.然后在核心他们如何不同?
irb(main):003:0> n = [ 65, 66, 67 ]
=> [65, 66, 67]
irb(main):004:0> n.pack("ccc")
=> "ABC"
irb(main):005:0> n.pack("C")
=> "A"
irb(main):006:0> n.pack("CCC")
=> "ABC"
irb(main):007:0> n.pack("qqq")
=> "A\x00\x00\x00\x00\x00\x00\x00B\x00\x00\x00\x00\x00\x00\x00C\x00\x00\x00\x00\
x00\x00\x00"
irb(main):008:0> n.pack("QQQ")
=> "A\x00\x00\x00\x00\x00\x00\x00B\x00\x00\x00\x00\x00\x00\x00C\x00\x00\x00\x00\
x00\x00\x00"
irb(main):009:0> n.pack("SSS")
=> "A\x00B\x00C\x00"
irb(main):010:0> n.pack("sss")
=> "A\x00B\x00C\x00"
irb(main):011:0>
Run Code Online (Sandbox Code Playgroud)
现在我可以从控制台看到它n.pack("SSS") and n.pack("sss");n.pack("ccc") and n.pack("CCC");
n.pack("qqq") and n.pack("QQQ")提供相同的输出.然后差异在哪里?
文档也没有涵盖每个指令在现实生活中如何工作的一些例子.我也对下面的指令感到困惑,因为我不知道如何测试它们?任何带有它们的小代码对我都有帮助:
S_, S!S> L> Q>S!< I!<L_, L!我不确定如何正确将4567Docker 的Sinatra端口正确地公开回主机。在本地运行该应用程序没有问题。
以下存储库显示了问题的情况https://gitlab.com/davidhooey/sinatra-docker
通过搜索,我注意到以下问题:在Docker容器中运行Ruby Sinatra无法连接(通过Mac主机)或无法找到命令(在不同情况下)?将--host 0.0.0.0传递到rackup命令中。但是,我正在使用编程方式启动该网站Site.run!。
文件树
.
??? Dockerfile
??? Gemfile
??? Gemfile.lock
??? README.md
??? app.rb
??? docker-compose.yml
??? site.rb
??? views
??? index.erb
Run Code Online (Sandbox Code Playgroud)
app.rb
module App
class App
def initialize(args)
# Do some stuff before launching site.
# Launch site
Site.run!
end
end
end
App::App.new(ARGV)
Run Code Online (Sandbox Code Playgroud)
在site.rb该:bind西纳特拉设置为0.0.0.0。
site.rb
require 'sinatra'
module App
class Site < Sinatra::Base
set :bind, '0.0.0.0'
set :static, …Run Code Online (Sandbox Code Playgroud) app = redmine-2.0.1
ruby = ruby 1.9.3p194(2012-04-20 revision 35410)[x86_64-linux]
[root@by1016690 public]# ./dispatch.fcgi
/usr/local/lib/ruby/gems/1.9.1/gems/activesupport-3.2.3/lib/active_support/dependencies.rb:251:in `block in require': iconv will be deprecated in the future, use String#encode instead.
/usr/local/lib/ruby/gems/1.9.1/gems/activesupport-3.2.3/lib/active_support/dependencies.rb:251:in `require': cannot load such file -- fcgi (LoadError)
from /usr/local/lib/ruby/gems/1.9.1/gems/activesupport-3.2.3/lib/active_support/dependencies.rb:251:in `block in require'
from /usr/local/lib/ruby/gems/1.9.1/gems/activesupport-3.2.3/lib/active_support/dependencies.rb:236:in `load_dependency'
from /usr/local/lib/ruby/gems/1.9.1/gems/activesupport-3.2.3/lib/active_support/dependencies.rb:251:in `require'
from /usr/local/lib/ruby/gems/1.9.1/gems/rack-1.4.1/lib/rack/handler/fastcgi.rb:1:in `<top (required)>'
from ./dispatch.fcgi:19:in `<main>'
Run Code Online (Sandbox Code Playgroud)