谁能给我一些关于如何将我的rails应用程序部署到GAE的指示?我一直在阅读它,但它似乎是一个相当复杂的任务.
我试过google-appengine宝石,但它也不是一块蛋糕.
DataMapper适配器是否有任何进展,或者我需要更改模型?
我希望看到一个关于它的完整细节教程,但我发现的那些有点过时了.
我想在Ruby on Rails项目中为我的模型使用一个更独立的系统.看起来解决方案是DataMapper.但是,我看到他们的存储库在去年都没有更新过,当安装在Rails 4项目中时,它与新版Gems的gem版本依赖冲突.使用Rails 4时,搜索不会显示任何内容.
现在的状态是什么?我应该使用它还是别的什么?
ruby ruby-on-rails datamapper ruby-datamapper ruby-on-rails-4
我正在尝试构建dm-postgres-adapter但是得到了这个错误.
sudo gem install dm-postgres-adapter
Building native extensions. This could take a while...
ERROR: Error installing dm-postgres-adapter:
ERROR: Failed to build gem native extension.
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby extconf.rb
checking for main() in -lpq... yes
checking for libpq-fe.h... yes
checking for libpq/libpq-fs.h... yes
checking for postgres.h... yes
checking for mb/pg_wchar.h... no
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers. Check the mkmf.log file for more details. You may
need configuration options.
Run Code Online (Sandbox Code Playgroud)
安装 …
我试着通过以下教程了解Sinatra ruby框架:
http://net.tutsplus.com/tutorials/ruby/singing-with-sinatra-the-recall-app-2/
然而,在运行gem安装并在test.rb中编写一个简单的sinatra服务器后,如下所示:
require 'sinatra'
require 'datamapper'
get '/' do
"Hello, World!"
end
Run Code Online (Sandbox Code Playgroud)
但是当我运行命令时ruby test.rb,我收到以下错误:
/usr/local/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require': no such file to load -- datamapper (LoadError)
from /usr/local/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
from datamapper_test.rb:2:in `<main>'
glenn@ubuntu:~/Dropbox/Repositories/sandbox/sinatra$ ruby datamapper_test.rb
/usr/local/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require': no such file to load -- datamapper (LoadError)
from /usr/local/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
from test.rb:3:in `<main>'
Run Code Online (Sandbox Code Playgroud)
好像它找不到datamapper gem.我怎样才能解决这个问题?
编辑:使用ruby 1.9.2
编辑(再次) :( parital)输出gem list:
data_mapper (1.2.0)
data_objects (0.10.8)
datamapper (1.2.0)
devise (1.4.5)
directory_watcher (1.4.0)
dm-aggregates (1.2.0)
dm-constraints (1.2.0)
dm-core (1.2.0) …Run Code Online (Sandbox Code Playgroud) 我想程序流中有一个逻辑错误,返回NoMethodError
首先,一段导致错误的代码.
<input id="#identity" type="number" name="journal[identity]" value="<%= @journal.identity unless @journal.identity.nil? %>" />
#Error Text
NoMethodError at /profile
undefined method `identity' for nil:NilClass
file: journal_form.erb location: block in singleton class line: 2
Run Code Online (Sandbox Code Playgroud)
输入标记内的代码是错误文本中描述的确切代码段.
我的程序流程就是这样.
/profile页面1还可以.用户可以毫无问题地登录和注销.对于第二步,代码就是这样
#profile.erb
<% if session[:user].role == 1 %>
<%= erb :assign_doctor %>
<% elsif session[:user].role == 2 %>
<%= erb :journal_form %>
<% elsif session[:user].role == 3 %>
<pre>
Silence!
</pre>
<% elsif session[:user].role == 4 %>
<%= erb :doctor_screen …Run Code Online (Sandbox Code Playgroud) 我刚刚开始使用DataMapper,我正在试图弄清楚为什么需要指定a has和a belongs_to.
例如,查看DataMapper网站上的示例.这不是多余的吗?如果发表has n评论,那么评论会自动belongs_to发布吗?为什么我必须指定这个?
class Post
include DataMapper::Resource
property :id, Serial
has n, :comments
end
class Comment
include DataMapper::Resource
property :id, Serial
property :rating, Integer
belongs_to :post # defaults to :required => true
def self.popular
all(:rating.gt => 3)
end
end
Run Code Online (Sandbox Code Playgroud) 我想获得一个与datamapper中指定ID匹配的对象列表.
我知道我可以使用多个' 或 '条件,但id的列表可以是数百个.
是否有一个datamapper命令,它等同于以下的sql?
select * from table where id in (1,2,3,4,5)
Run Code Online (Sandbox Code Playgroud) 我正在使用datamapper和dm-contraints设置我的数据库模型.我有两个模型有很多关系,但是当我试图销毁一个时,我得到的唯一信息是false.
是否有可能获得datamapper给我更多的反馈,哪个关系正是导致问题?
我正在使用Sinatra和DataMapper开发RESTful API.当我的模型验证失败时,我想返回JSON以指示哪些字段出错.DataMapper在我的类型模型中添加了"errors"属性DataMapper::Validations::ValidationErrors.我想返回此属性的JSON表示.
这是一个单独的文件示例(得爱Ruby/Sinatra/DataMapper!):
require 'sinatra'
require 'data_mapper'
require 'json'
class Person
include DataMapper::Resource
property :id, Serial
property :first_name, String, :required => true
property :middle_name, String
property :last_name, String, :required => true
end
DataMapper.setup :default, 'sqlite::memory:'
DataMapper.auto_migrate!
get '/person' do
person = Person.new :first_name => 'Dave'
if person.save
person.to_json
else
# person.errors - what to do with this?
{ :errors => [:last_name => ['Last name must not be blank']] }.to_json
end
end
Sinatra::Application.run!
Run Code Online (Sandbox Code Playgroud)
在我的实际应用程序中,我正在处理POST或PUT,但为了使问题易于重现,我正在使用GET,以便您可以使用或浏览器.curl http://example.com:4567/person
所以,我所拥有的person.errors和我正在寻找的JSON输出就像哈希产生的那样: …
目前收到Ruby Hash: can't convert String into Integer错误.代码在edit_id行上失败.
我已经尝试过许多不同的解决方案,这些解决方案来自SE上已发布的类似问题,但不幸的是,它们都没有奏效
哈希:
{"downloadID"=>115, "PageID"=>nil, "title"=>"hi", "dlLink"=>"http://www.a.com", "imgSrc"=>"http://www.a.com", "caption"=>"aaaa", "dlLive"=>nil, "createdAt"=>nil, "user_id"=>7}
Run Code Online (Sandbox Code Playgroud)
码:
#edit download
put '/view1/downloadedit' do
data = JSON.parse(request.body.read)
puts data
edit_id = data["downloadID"]
puts edit_id
@download = Download.get(:download_id => edit_id)
puts data
if @download.update(data)
status 201
puts 'edit saved okay'
else
status 201
puts 'edit failed to SAVE'
end
end
Run Code Online (Sandbox Code Playgroud)