关于ember-data和子类化DS.RESTAdapter来覆盖buildURL.
我有两个端点.让我们说他们是:
example.com/users/user-id
example.com/users/user-id/images
Run Code Online (Sandbox Code Playgroud)
将"user-id"替换为实际的用户ID.
所以我有两个型号:
App.User = DS.Model.extend
images: DS.hasMany 'image',
async: true
inverse: 'user'
App.Image = DS.Model.extend
user: DS.belongsTo 'user',
async: true
inverse: 'images'
Run Code Online (Sandbox Code Playgroud)
但是,来自/users/user-id端点的有效负载不会返回图像ID.我无法控制这个(它是第三方api).
因此,我需要向/ users/user-id/images单独发出请求.我正在为DS.RESTAdapter创建子类以指定url:
App.ImageAdapter = DS.RESTAdapter.extend
buildURL: (type, id) ->
# need to return "/users/user-id/images"
# but need to get the value of user-id somehow
Run Code Online (Sandbox Code Playgroud)
从路由开始,我甚至会如何将用户ID传递给商店,以便它可以buildURL使用用户ID 调用自定义适配器中的方法?
App.UserRoute = Em.Route.extend
afterModel: (model) ->
# how to provide value of `model.get 'id'` to store/adapter/buildURL?
# do I even do …Run Code Online (Sandbox Code Playgroud) 请忍受这个人为的例子,但这是我能想到的重现问题的最简单的方法。
(ns something.core)
(defn call-foo [something & args]
(let [a-foo (:foo (eval (:quux something)))]
(apply a-foo args)))
(def Something {
:foo (fn [& args] args)
:bar (fn [something] (call-foo something))
})
(defn make-something []
{:quux 'Something})
Run Code Online (Sandbox Code Playgroud)
在 REPL 或 with 中运行以下命令lein run效果很好。
(let [subject (make-something)
actual (call-foo subject "hello" "greetings")]
(println actual))
;;=> (hello greetings)
Run Code Online (Sandbox Code Playgroud)
该问题仅在测试和执行期间出现lein test:
(ns something.core-test
(:require [clojure.test :refer :all]
[something.core :refer :all]))
(deftest a-test
(let [subject (make-something)
actual (call-foo subject "hello" "greetings")] …Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个动态小部件列表,其中小部件的数量由用户输入的数值确定。此外,每个小部件都会返回一个点击事件。这是我用来获取用户输入的内容:
settings :: MonadWidget t m => m (Dynamic t (Maybe Int))
Run Code Online (Sandbox Code Playgroud)
然后我用它来生成一个随机数生成器列表(这些是 的值的事实RandomGen并不重要。它们只是用于每个元素的内容,而不是元素的数量)。:
split' :: RandomGen g => Int -> g -> [g]
-- ...
gs <- mapDyn (maybe (split' 1 g) (flip split' g)) =<< settings
Run Code Online (Sandbox Code Playgroud)
现在我有gs :: (MonadWidget t m, RandomGen g) => Dynamic t [g]。其中g每个部件。这些小部件返回Event值,因此我需要将它们组合起来(即leftmost),然后在foldDyn某处使用该值。
go :: (MonadWidget t m, Random g) => g -> m (Event t MyType)
-- ...
clicked …Run Code Online (Sandbox Code Playgroud) 我在尝试编译使用 Unity 测试框架通过Throw The Switch编写的测试时,在链接器的某个地方遇到了一些麻烦。我还有其他测试可以编译并运行得非常好,所以我肯定只是在启用断言助手以进行双浮点比较时遗漏了一些东西。
头文件中有文档告诉我们如何启用双浮点比较。
* - define UNITY_INCLUDE_DOUBLE to allow double floating point comparisons
Run Code Online (Sandbox Code Playgroud)
但是,我最终遇到了这个错误:
Undefined symbols for architecture x86_64:
"_UnityAssertDoublesWithin", referenced from:
_test_example in main-6fae82.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Run Code Online (Sandbox Code Playgroud)
我写了一个最简单的例子来复制这个:
#define UNITY_INCLUDE_DOUBLE
#include "unity.h"
void test_example(void)
{
TEST_ASSERT_EQUAL_DOUBLE(1.234, 1.234);
}
int main(void) {
UNITY_BEGIN();
RUN_TEST(test_example);
return UNITY_END();
}
Run Code Online (Sandbox Code Playgroud)
示例的 CWD 的内容和用于调用 clang 的确切命令(再次显示相同的错误):
$ ls
main.c unity.c unity.h …Run Code Online (Sandbox Code Playgroud)