我的ssh密钥肯定设置正确,因为我在使用ssh时从未提示输入密码.但是在部署时,capistrano仍然要求输入密码cap deploy.我设置的时候不会要求密码cap deploy:setup,奇怪的是.如果没有密码提示,它将使部署周期更加顺畅.
细节:我正在将一个Sinatra应用程序部署到Dreamhost共享帐户(使用Passenger).我曾经按照教程做了很长时间,这在当时完美无缺.从那以后出现了什么.我正在使用capistrano(2.5.9)和git版本1.6.1.1.这是我的Capfile:
load 'deploy' if respond_to?(:namespace) # cap2 differentiator
set :user, 'ehsanul'
set :domain, 'jellly.com'
default_run_options[:pty] = true
# the rest should be good
set :repository, "ehsanul@jellly.com:git/jellly.git"
set :deploy_to, "/home/ehsanul/jellly.com"
set :deploy_via, :remote_cache
set :scm, 'git'
set :branch, 'deploy'
set :git_shallow_clone, 1
set :scm_verbose, true
set :use_sudo, false
server domain, :app, :web
namespace :deploy do
task :migrate do
run "cd #{current_path}; /usr/bin/rake migrate environment=production"
end
task :restart do
run "touch #{current_path}/tmp/restart.txt"
end
end
after …Run Code Online (Sandbox Code Playgroud) 在Sinatra,是否可以content_type 'application/json'设置默认值?因为我正在写一个api.
Sinatra是多线程的吗?我在其他地方读到"sinatra默认是多线程的",这意味着什么?
考虑这个例子
get "/multithread" do
t1 = Thread.new{
puts "sleeping for 10 sec"
sleep 10
# Actually make a call to Third party API using HTTP NET or whatever.
}
t1.join
"multi thread"
end
get "/dummy" do
"dummy"
end
Run Code Online (Sandbox Code Playgroud)
如果我随后在另一个选项卡或浏览器中访问"/ multithread"和"/ dummy",则无法提供任何内容(在这种情况下为10秒),直到"/ multithread"请求完成.如果活动冻结应用程序变得没有响应.
我们如何在不产生应用程序的另一个实例的情况下解决这个问题?
我有一个简单的Sinatra服务器,我通过textmate运行,但我无法从同一网络上的另一台计算机访问.
我在Mac OS 10.8.3上运行Ruby 1.9.3p327和Sinatra 1.4.1.防火墙已禁用.
我在不同的网络和计算机上测试了相同的场景.
计算机响应简单的ping但当我尝试telnet端口4567时,我无法建立连接.
我刚刚从rvm切换到rbenv,我正在尝试使用bundler进行gem管理.运行bundle install并尝试运行一个简单的sinatra应用程序(ruby app.rb),我得到这个:
Could not find haml-3.1.4 in any of the sources
Run `bundle install` to install missing gems.
Run Code Online (Sandbox Code Playgroud)
bundle install再次跑步没有效果.还尝试bundle update了另一个问题回复的建议.
这是我的Gemfile:
source "http://rubygems.org"
gem "sinatra"
gem "haml"
Run Code Online (Sandbox Code Playgroud)
这就是bundle show产生的
* bundler (1.0.22)
* haml (3.1.4)
* rack (1.4.1)
* rack-protection (1.2.0)
* sinatra (1.3.2)
* tilt (1.3.3)
Run Code Online (Sandbox Code Playgroud)
这是我的应用程序所需要的:
require "rubygems"
require "bundler/setup"
require 'sinatra'
Run Code Online (Sandbox Code Playgroud)
我敢说这是一种路径问题,其中bundler和rbenv没有一起玩.我试过通过rbenv的文档查看,但无法找到任何东西.
注意:在另一个sinatra应用程序中,我尝试运行它时会得到以下内容:
Could not find addressable-2.2.7 in any of the sources
Run `bundle …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用Ruby和Sinatra将参数传递给erb视图.
例如,我可以这样做:
get '/hello/:name' do
"Hello #{params[:name]}!"
end
Run Code Online (Sandbox Code Playgroud)
我如何传递:name给视图?
get '/hello/:name' do
erb :hello
end
Run Code Online (Sandbox Code Playgroud)
我如何读取view/hello.erb中的参数?
谢谢!
这是一个非常简单的问题,但我在任何地方都找不到这个.
如何从Sinatra获取客户端的IP地址?
get '/' do
"Your IP address is #{....}"
end
Run Code Online (Sandbox Code Playgroud) 我正忙着将一个非常小的Web应用程序从ASP.NET MVC 2移植到Ruby/Sinatra.
在MVC应用程序中,当用户登录对数据库进行了正确验证时,FormsAuthentication.SetAuthCookie用于设置持久性cookie.
我想知道在Sinatra中相应的Forms身份验证是什么?所有的身份验证框架看起来都非常笨重,并不是我真正想要的.
我想知道如何使用Bundler与Sinatra.我们的想法是使用Bundler在.gems文件夹中下载的gem.
我一直在使用Sinatra一段时间,我想通过websockets推送数据,为我的web-app添加一些实时功能.
我已经成功地使用了gem'em-websocket',但是还没能编写一个带有sinatra Web服务器和web-socket服务器的ruby文件.
我试过旋转跑!或者开始!在单独的线程中关闭方法但没有成功.
有没有人得到这个工作?
我希望将它们放在同一个文件中,然后在两个服务器之间共享变量.
谢谢!
sinatra ×10
ruby ×9
bundler ×2
capistrano ×1
content-type ×1
erb ×1
eventmachine ×1
ip-address ×1
json ×1
rack ×1
rbenv ×1
ssh-keys ×1
web-services ×1
websocket ×1