我正在概述/澄清ruby(非rails/merb/etc)项目的理想项目结构.我猜它遵循以下几点:
app/
bin/ #Files for command-line execution
lib/
appname.rb
appname/ #Classes and so on
Rakefile #Running tests
README
test,spec,features/ #Whichever means of testing you go for
appname.gemspec #If it's a gem
Run Code Online (Sandbox Code Playgroud)
我有什么不对吗?我错过了哪些部分?
我正在尝试为iPhone应用程序构建rails API.Devise适用于通过Web界面登录,但我需要能够使用REST API创建和销毁会话,我想使用JSON而不必在会话控制器上执行POST并且必须解析HTML并处理重定向.
我以为我可以这样做:
class Api::V1::SessionsController < Devise::SessionsController
def create
super
end
def destroy
super
end
end
Run Code Online (Sandbox Code Playgroud)
在config/routes.rb中我添加了:
namespace :api do
namespace :v1 do
resources :sessions, :only => [:create, :destroy]
end
end
Run Code Online (Sandbox Code Playgroud)
rake路由显示路由设置正确:
api_v1_sessions POST /api/v1/sessions(.:format) {:action=>"create", :controller=>"api/v1/sessions"}
api_v1_session DELETE /api/v1/sessions/:id(.:format) {:action=>"destroy", :controller=>"api/v1/sessions"}
Run Code Online (Sandbox Code Playgroud)
当我发布到/ user/sessions时,一切正常.我得到一些HTML和302.
现在如果我发布到/ api/v1/sessions我得到:
未知的操作AbstractController :: ActionNotFound
curl -v -H 'Content-Type: application/json' -H 'Accept: application/json' -X POST http://localhost:3000/api/v1/sessions -d "{'user' : { 'login' : 'test', 'password' : 'foobar'}}"
Run Code Online (Sandbox Code Playgroud) 我刚开始学习C(使用Thinking In C),我想知道在C项目的git存储库中我应该忽略哪些文件.
没有任何建议可以太明显 - 我是一个完全的菜鸟.谢谢!
这是我的代码:
records_hash = records[:id].inject({}) { |result,h|
if result.has_key?(h)
result[h] += 1
else
result[h] = 1
end
result
}
@test2 = records_hash.each{|key,value| puts "#{key} is #{value}"}
Run Code Online (Sandbox Code Playgroud)
我的输出应该如下所示:
bozo is 3
bubba is 4
bonker is 5
Run Code Online (Sandbox Code Playgroud)
但它在页面(<%= @test2 %>
)上呈现如下:
bozo3bubba4bonker5
Run Code Online (Sandbox Code Playgroud)
我尝试过类似块的.each_key和.each-value,它们都返回上面相同的字符串.我在IRB中运行相同的代码,它按预期工作.
我究竟做错了什么?
我需要解析成千上万的feed,性能是必不可少的要求.你有什么建议吗?
提前致谢!
我想,如果用户登录后,它会自动重定向到以前的位置,但这似乎永远不会发生,它总是重定向回根位置.从阅读有关设计的文档看来,这个功能似乎只是起作用.我是以某种方式错误地使用它和/或我如何强制它存储位置和重定向无论如何?
authentication = UserToken.find_by_provider_and_uid(omniauth['provider'], omniauth['uid'])
if authentication
flash[:notice] = I18n.t "devise.omniauth_callbacks.success", :kind => omniauth['provider']
sign_in_and_redirect(:user, authentication.user)
else
Run Code Online (Sandbox Code Playgroud) 我正在使用Active Merchant和PayPal沙箱创建商店.它似乎工作正常,但我不认为它甚至是远程安全的.我真的不太了解HTTPS以及如何实现安全连接.
我目前正在通过会话中的信用卡和账单信息(可能不是最聪明的想法).我目前的代码发布在下面.我真的需要帮助我们采取什么方向和步骤,以使这个安全,可用的商店.
def payment
session[:billing_address] = params[:billing_address]
end
def summary
@credit_card = params[:credit_card]
session[:credit_card] = params[:credit_card]
@billing_address = session[:billing_address]
@cart = get_cart
@purchases = @cart.purchases
@total = @cart.total
end
def finish
@cart = get_cart
@total = @cart.total
credit_card = ActiveMerchant::Billing::CreditCard.new( session[:credit_card] )
billing_address = session[:billing_address]
flash[:notice] = credit_card.errors and return unless credit_card.valid?
gateway = ActiveMerchant::Billing::PaypalGateway.new(:login=>$PAYPAL_LOGIN, :password=>$PAYPAL_PASSWORD)
res = gateway.authorize(@total, credit_card, :ip=>request.remote_ip, :billing_address=>billing_address)
if res.success?
gateway.capture(@total, res.authorization)
flash[:notice] = "Authorized"
else
flash[:notice] = "Failure: " + res.message.to_s
end
end
Run Code Online (Sandbox Code Playgroud) 我想用Ruby创建一个WebService(Sinatra,Padrino,也许是Ramaze ......还不知道......),但我绝对想要保护它......
它将成为Iphone-App的后端,所以我认为SSL-Secured HTTP-Basic-Auth会很好.
我一直在寻找几个身份验证框架,并遇到了监狱长...似乎有很好的记录,设计是建立在它之上......所以不能那么糟糕......
但是......对我来说似乎有点矫枉过正,因为我需要......
然后我发现了这个Code-Snipplet:
def protected!
unless authorized?
response['WWW-Authenticate'] = %(Basic realm="Testing HTTP Auth")
throw(:halt, [401, "Not authorized\n"])
end
end
def authorized?
@auth ||= Rack::Auth::Basic::Request.new(request.env)
@auth.provided? && @auth.basic? && @auth.credentials && @auth.credentials == ['admin', 'admin']
end
Run Code Online (Sandbox Code Playgroud)
看起来我只是不需要超过那个...或者你们中的任何人能提供一个很好的Warden + HTTP-Basic Auth示例吗?或者向我解释使用监狱长的更多好处?
提前致谢!!!:)